+
    Qixh  c                  s   R t ^ RIHt RtRtRtRtRt^ RIt^ RI	t	^ RI
t
^ RIHt ^ R	IHt ^ RIt]P                   ! R
R4       ^ RIHt ^ RIHt Rt ]	P*                  P-                  RR4      P/                  4       R8w  d6   ]P                   ! RR4       ^ RIHt ]P2                  P5                  4       RJt^RIHt ^RIHt ^RIHt ^RIH t  ^RIH!t! ^RIH"t" ^RIH#t# ^RIH$t$ ^RIH%t% ^RIH&t& ^RI'H(t( ^R I)H*t* ^R!I+H,t, ^R"I-H.t. ]'       d   ^R#I/H0t0  ! R$ R%4      t1 ! R& R'4      t2 ! R( R)4      t3]3! 4       t4R* R+ lt5R#   ] d     Li ; i),zMouse review mode.)annotationsz$Id$z
$Revision$z$Date$z@Copyright (c) 2008 Eitan IsaacsonCopyright (c) 2016 Igalia, S.L.ZLGPLN)deque)TYPE_CHECKINGAtspiz2.0)r   )GLibFZXDG_SESSION_TYPE ZwaylandWnckz3.0)r   )cmdnames)dbus_service)debug)focus_manager)keybindings)input_event)messages)script_manager)settings_manager)speech_and_verbosity_manager)AXComponent)AXObject)AXText)AXUtilities)defaultc                  sr    ] tR t^PtRtRR R lltR R ltR R ltR	 R
 ltR R lt	R R lt
R R ltRtR# )_StringContextz8The textual information associated with an _ItemContext.Nc               s0    V ^8  d   QhRRRRRRRRR	RR
R/# )   objAtspi.Accessiblescriptdefault.Script | NonestringstrstartintendreturnNone Zformat   "6/usr/lib/python3.14/site-packages/orca/mouse_review.py__annotate___StringContext.__annotate__S   sF     < << &< 	<
 < < 
<    c                	sz    Wn         W n        W0n        W@n        WPn        \
        P                  ! WV4      V n        R # N)_obj_script_string_start_endr   Zget_range_rect_rect)selfr   r   r   r   r    s   &&&&&&r&   __init__Z_StringContext.__init__S   s1     		**3s;
r)   c                    V ^8  d   QhRRRR/# )r   otherZobjectr!   boolr#   r$   r%   r&   r'   r(   b   s     ( (F (t (r)   c                	sB   \        V\        4      '       g   R # VRJ;'       d}    V P                  VP                  8H  ;'       d\    V P                  VP                  8H  ;'       d;    V P                  VP                  8H  ;'       d    V P
                  VP
                  8H  # )FN)Z
isinstancer   r+   r-   r.   r/   r1   r4      &&r&   __eq__Z_StringContext.__eq__b   s    %00D  ( (		UZZ'( (-( ( u||+( ( 		UZZ'		(r)   c               r3   )r   r4   z_StringContext | Noner!   r5   r#   r$   r%   r&   r'   r(   k   s     % %%: %t %r)   c                s   Vf   R# V P                   '       d   VP                  4       '       g   R# V P                  4       pVR8X  d   R# VP                  4       pVR8X  d   R# V^,          V^,          8w  dt   V P                   VP                  4       8X  dU   V P                  P	                  R4      pV'       d2   V^,          V,          V^,          8X  d   . VR,          OV^,          N5p\
        P                  ! 4       pVw  Vn        Vn        Vn	        Vn
        \
        P                  ! 4       pVw  Vn        Vn        Vn	        Vn
        \        P                  ! WV4      V8w  d   R# V P                  '       d.   V P                  P                  4       VP                  4       9   g   R# RV P                   RVP                  4        R2p\        P                   ! \        P"                  VR4       R# )	-Returns True if this is a substring of other.F
:    i   NzMOUSE REVIEW: 'z' is substring of 'Z'T)r;   r;   r;   r;   )r+   
get_objectget_bounding_boxr-   Zcountr   ZRectxywidthheightr   Zget_rect_intersectionstrip
get_stringr	   print_message
LEVEL_INFO)r1   r4   Zthis_boxZ	other_boxZthis_newline_countZ	this_rectZ
other_rectmsg   &&      r&   is_substring_ofZ_StringContext.is_substring_ofk   s    =			e..00((*|#**,	$
 A;)A,&4998H8H8J+J!%!3!3D!9!hqk4F&F)TU,&V7HSM79Q<7JJL	FNC	Y[)/93CZZ\
JSG
jlJ$4j6G,,YCyP!3!3!59I9I9K!K~-@AQAQAS@TTUVE,,c48r)   c                   V ^8  d   QhRR/# r   r!   ztuple[int, int, int, int]r#   r$   r%   r&   r'   r(      s     O O"; Or)   c                s    V P                   P                  V P                   P                  V P                   P                  V P                   P                  3# )z>Returns the bounding box associated with this context's range.)r0   r>   r?   r@   rA   r1      &r&   r=   Z_StringContext.get_bounding_box   s7     zz||TZZ\\4::+;+;TZZ=N=NNNr)   c               rI   )r   r!   r   r#   r$   r%   r&   r'   r(      s      , r)   c                    V P                   # z;Returns the accessible object associated with this context.r+   rK   rL   r&   r<   Z_StringContext.get_object        yyr)   c               rI   r   r!   r   r#   r$   r%   r&   r'   r(      s      C r)   c                rM   z0Returns the string associated with this context.r-   rK   rL   r&   rC   Z_StringContext.get_string        ||r)   c               rI   r   r!   r5   r#   r$   r%   r&   r'   r(      s       r)   c                s   V P                   '       g+   Rp\        P                  ! \        P                  VR4       R# V P                  '       g+   Rp\        P                  ! \        P                  VR4       R# V P                   P
                  P                  V P                  V P                  R7      p\        P                  ! 4       pVP                  V P                  V P                  4      p\        P                  ! 4       P                  V P                  V P                  V P                  \        P                  4       V P                   P!                  WBRR7       V P                   P#                  V P                  R4       R# )"Presents this context to the user.z2MOUSE REVIEW: Not presenting due to lack of scriptTFz2MOUSE REVIEW: Not presenting due to lack of string)r   r   )voice	interrupt)r,   r	   rD   rE   r-   Zspeech_generatorrW   r+   r   get_managerZadjust_for_presentationr
   emit_region_changedr.   r/   MOUSE_REVIEWZspeak_messageZdisplay_message)r1   rF   rW   Zmanagerr      &    r&   presentZ_StringContext.present   s
    |||FC 0 0#t<|||FC 0 0#t<--33		$,,3W.::<00DLLI!!#77IIt{{DII}/I/I	K""6%"H$$T\\26r)   )r/   r+   r0   r,   r.   r-   )Nr   r;   r;   )__name__
__module____qualname____firstlineno____doc__r2   r8   rH   r=   r<   rC   r^   __static_attributes__r#   r)   r&   r   r   P   s/    B<(%NO


 r)   r   c                  s    ] tR t^tRtR!R R lltR R ltR R ltR	 R
 ltR R lt	R t
R R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR tR# )"_ItemContextz;Holds all the information of the item at a specified point.Nc               s0    V ^8  d   QhRRRRRRRRRRR	R
/# )r   r>   r   r?   r   Atspi.Accessible | Noneframer   r   r!   r"   r#   r$   r%   r&   r'   _ItemContext.__annotate__   sF     / // / %	/ '/ &/ 
/r)   c                	s    Wn         W n        W0n        W@n        WPn        W`n        V P                  4       V n        \        P                  ! 4       V n	        \        P                  ! V4      V n        R # r*   )_x_yr+   _granularity_framer,   _get_string_contextr-   time_timer   Zget_rectr0   )r1   r>   r?   r   granularityrg   r   s   &&&&&&&r&   r2   Z_ItemContext.__init__   sR     	'//1YY[
 ))#.
r)   c               rI   rU   r#   r$   r%   r&   r'   rh      s     . .t .r)   c                	s    VR J;'       d\    V P                   VP                   8H  ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r*   )rl   r+   r-   r6   r7   r&   r8   Z_ItemContext.__eq__   s_    D  . .u||+. .		UZZ'. . -	.r)   c               r3   r   priorre   r!   r5   r#   r$   r%   r&   r'   rh      s       $ r)   c                	sx   V P                   VP                  4       8w  g    V P                  VP                  4       8w  d+   R p\        P
                  ! \        P                  VR4       R# V P                  4       '       dX   VP                  4       '       dB   V P                  V4      '       g+   Rp\        P
                  ! \        P                  VR4       R# VP                  4       R,          w  r4V P                  V8X  d<   V P                  V8X  d+   Rp\        P
                  ! \        P                  VR4       R# V P                  VP                  4       ,
          pVR8  d0   RVR R	2p\        P
                  ! \        P                  VR4       R# R
p\        P
                  ! \        P                  VR4       R# )z0MOUSE REVIEW: Not a duplicate: different objectsTFz1MOUSE REVIEW: Not a duplicate: not a substring ofr;   r   Nz6MOUSE REVIEW: Treating as duplicate: mouse didn't moveg      ?z#MOUSE REVIEW: Not a duplicate: was z.2fzs agoz#MOUSE REVIEW: Treating as duplicate)r+   r<   rl   	get_framer	   rD   rE   rC   _is_substring_ofr=   ri   rj   ro   get_time)r1   rr   rF   prior_xprior_yZintervals   &&    r&   _treat_as_duplicateZ _ItemContext._treat_as_duplicate   sI   99((**dkkU__=N.NDC 0 0#t<??!1!1!3!3D<Q<QRW<X<XEC 0 0#t< 113C877g$''W"4JC 0 0#t<:: 00c>7~UKC 0 0#t<3E,,c48r)   c               rI   rU   r#   r$   r%   r&   r'   rh      s     8 8 8r)   c                	sB    \         P                  ! V P                  4      # r*   )r   Zis_whitespace_or_emptyr+   rK   rL   r&   _treat_as_single_objectZ$_ItemContext._treat_as_single_object   s    ,,TYY77r)   c               rI   r   r!   r   r#   r$   r%   r&   r'   rh      s     K K^ Kr)   c                s   V P                   '       d   V P                  '       g   \        V P                  4      # V P                  4       '       d!   \        V P                  V P                   4      # V P                  \
        P                  P                  8X  d;   \        P                  ! V P                  V P                  V P                  4      w  rpM9\        P                  ! V P                  V P                  V P                  4      w  rpV'       d1   V P                   P                  P                  V P                  W#4      p\        V P                  V P                   WV4      # )z?Returns the _StringContext associated with the specified point.)r,   r+   r   rz   rk   r   TextGranularityWORDr   Zget_word_at_pointri   rj   Zget_line_at_point	utilitiesZexpand_eocs)r1   r   r   r    s   &   r&   rm   Z _ItemContext._get_string_context   s     !$)),,''))!$))T\\:: 5 5 : ::!'!9!9$))TWWdgg!VF3!'!9!9$))TWWdgg!VF3\\++77		5NFdiivcJJr)   c                	sJ    R  p\         P                  ! V P                  V4      # )c                s   \         P                  ! V 4      ;'       gq    \         P                  ! V 4      ;'       gS    \         P                  ! V 4      ;'       g5    \         P                  ! V 4      ;'       g    \         P
                  ! V 4      # r*   )r   Zis_dialog_or_windowZis_layered_paneis_menuZis_page_tabZis_tool_barr>   rL   r&   is_containerZ1_ItemContext._get_container.<locals>.is_container  sy    2215 . ...q1. .&&q). . **1-. . **1-	.r)   )r   find_ancestorr+   )r1   r      & r&   _get_containerZ_ItemContext._get_container  s     	. %%dii>>r)   c               r3   )r   r4   re   r!   r5   r#   r$   r%   r&   r'   rh     s     H Hl Ht Hr)   c                sT    V P                   P                  VP                  4       4      # )r9   )r-   rH   get_string_contextr6   r7   r&   ru   Z_ItemContext._is_substring_of  s"     ||++E,D,D,FGGr)   c               rI   r   r!   rf   r#   r$   r%   r&   r'   rh     s      3 r)   c                rM   rN   rO   rK   rL   r&   r<   Z_ItemContext.get_object  rP   r)   c               rI   r   r#   r$   r%   r&   r'   rh     s      2 r)   c                rM   )z/Returns the frame associated with this context.)rl   rK   rL   r&   rt   Z_ItemContext.get_frame  s     {{r)   c               rI   rJ   r#   r$   r%   r&   r'   rh     s     # #"; #r)   c                s   V P                   P                  4       w  rr4V'       g_   V'       gW   V P                  P                  V P                  P                  V P                  P
                  V P                  P                  3# WW43# )z6Returns the bounding box associated with this context.)r-   r=   r0   r>   r?   r@   rA   )r1   r>   r?   r@   rA   r]   r&   r=   Z_ItemContext.get_bounding_box  s^     #ll;;=e::<<tzz/?/?ARARRRU""r)   c               rI   rQ   r#   r$   r%   r&   r'   rh   '  s     ) )C )r)   c                s6    V P                   P                  4       # rR   )r-   rC   rK   rL   r&   rC   Z_ItemContext.get_string'  s     ||&&((r)   c               rI   r{   r#   r$   r%   r&   r'   rh   ,  s      N r)   c                rM   )z8Returns the string context associated with this context.rS   rK   rL   r&   r   Z_ItemContext.get_string_context,  rT   r)   c               rI   )r   r!   Zfloatr#   r$   r%   r&   r'   rh   1  s      % r)   c                rM   )z.Returns the time associated with this context.)ro   rK   rL   r&   rv   Z_ItemContext.get_time1  s     zzr)   c               r3   rq   r#   r$   r%   r&   r'   rh   6  s     . .l .t .r)   c                	s   VP                  4       pV P                  '       d	   V'       g   R # \        P                  ! V4      V P                  8w  d   R # V P	                  4       '       d   R # \
        P                  ! V4      # F)r<   r+   r   Z
get_parentrz   r   Zis_link)r1   rr   	prior_obj   && r&   _is_inline_childZ_ItemContext._is_inline_child6  s[    $$&	yyy	y)TYY6''))""9--r)   c               r3   rq   r#   r$   r%   r&   r'   rh   C  s     ( (\ (d (r)   c                sV   W8X  g   V P                  V4      '       d+   Rp\        P                  ! \        P                  VR4       R# VP	                  4       pVP                  4       R,          w  rEV P                  ;'       d    V P                  V8g  ;'       gQ    \        P                  ! V P                  V,
          ^,          V P                  V,
          ^,          ,           4      ^8  pV P                  '       g   Q R4       hV'       d   V P                  P                  4        V P                  '       dI   V P                  VP                  4       8w  d*   V P                  P                  V P                  RRRR7       V P                  '       Ed   V P                  V8w  Ed   V P!                  V4      '       Eg   T;'       g    V P#                  4       p\$        P&                  ! 4       P)                  V P                  \$        P*                  R7       V P                  P                  V P                  VRR7       V P,                  P/                  4       \0        P2                  ! V P                  4      8X  d   R# \4        P6                  ! V P                  4      '       g)   \4        P8                  ! V P                  4      '       g   R# \4        P:                  ! V P                  4      '       dj   \<        P>                  ! V P                  4      ;'       g!    \0        P2                  ! V P                  4      pV P,                  P/                  4       V8X  d   R# V P,                  P/                  4       VP/                  4       8w  d#   V P,                  PA                  4       '       d   R# R# )	rV   z-MOUSE REVIEW: Not presenting due to no changeTFrs   zScript must not be None)ZalreadyFocusedinMouseReviewrX   )Zmode)ZpriorObjr   )!ry   r	   rD   rE   r<   r=   r+   mathZsqrtri   rj   r,   Zinterrupt_presentationrl   rt   Zpresent_objectr   r   r
   rZ   r[   r\   r-   rC   r   get_namer   Zis_editableZis_terminalZis_table_cellr   get_all_textr^   )r1   rr   rF   r   rw   rx   rX   ZtextrG   r&   r^   Z_ItemContext.presentC  s    =D44U;;AC 0 0#t<$$&	 113C8II88$))y"8 O Oyy$''G+a/477W3Dq2HHIBN 	 |||666|LL//1;;;4;;%//*;;LL''7;6:26 ( 8
 999i/8M8Me8T8T!::T%8%8%:I%%';;		 : : < <LL''		IUY'Z||&&(H,=,=dii,HH++DII66+:Q:QRVR[R[:\:\((33**4995UU9J9J4999U<<**,4<<""$(8(8(::t||?S?S?U?Ur)   )	rl   rk   r+   r0   r,   r-   ro   ri   rj   )r;   r;   NNNN)r_   r`   ra   rb   rc   r2   r8   ry   rz   rm   r   ru   r<   rt   r=   rC   r   rv   r   r^   rd   r#   r)   r&   re   re      sW    E/&.68K&?H


#)


.( (r)   re   c                  sb   ] tR tRtRtR R ltR*R R lltR+R R lltR	 R
 ltR R lt	R R lt
R R ltR t]P                  R R l4       t]P                   R R l4       t]P$                  R,R R ll4       tR R ltR R ltR-R R lltR R  ltR! R" ltR# R$ ltR% R& ltR' R( ltR)tR# ).MouseReviewerin  z(Main class for the mouse-review feature.c               rI   r   r!   r"   r#   r$   r%   r&   r'   MouseReviewer.__annotate__q  s      $ r)   c                	s   V P                  4       V n        \        4       V n        R V n        . V n        . V n        / V n        \        P                  P                  V P                  4      V n        RV n        \        4       V n        V P!                  R4      V n        \$        P&                  ! 4       V n        \*        '       g2   Rp\,        P.                  ! \,        P0                  VR4       RV n        R # Rp\,        P.                  ! \,        P0                  VR4       \2        P4                  ! 4       pVP7                  RV 4       V P                  '       g   R # V P9                  4        R # )NFT)MOUSE REVIEW ERROR: Wnck is not availablez)MOUSE REVIEW: Registering D-Bus commands.r   )get_is_enabled_activere   _current_mouse_over
_workspace_windows_all_windows_handler_idsr   ZEventListenernew	_listener_event_listenerin_mouse_eventr   _event_queueget_handlers	_handlersr   KeyBindings	_bindings_MOUSE_REVIEW_CAPABLEr	   rD   rE   r   Zget_remote_controllerZregister_decorated_moduleactivate)r1   rF   Z
controller   &  r&   r2   ZMouseReviewer.__init__q  s	   !0021= +-/146494G4G4K4KDNN4[$)#(7CGCTCTUYCZ2=2I2I2K$$=C 0 0#t< DL9E,,c48!779
,,_dC|||r)   c                    V ^8  d   QhRRRR/# )r   refreshr5   
is_desktopr#   r$   r%   r&   r'   r     s      D d r)   c                sN   V'       dc   RV 2p\         P                  ! \         P                  VR4       V P                  P	                  R4       V P                  4        V P                  # V P                  P                  4       '       d   V P                  4        V P                  # )z%Returns the mouse-review keybindings.z/MOUSE REVIEW: Refreshing bindings. Is desktop: Tz"MOUSE REVIEW: Refreshing bindings.)r	   rD   rE   r   Zremove_key_grabs_setup_bindingsZis_empty)r1   r   r   rF   s   &&& r&   get_bindingsZMouseReviewer.get_bindings  s     CJ<PC 0 0#t<NN++,PQ  " ~~ ^^$$&&  "~~r)   c               r3   )r   r   r5   r!   z(dict[str, input_event.InputEventHandler]r#   r$   r%   r&   r'   r     s      D 5] r)   c                s    V'       d9   Rp\         P                  ! \         P                  VR4       V P                  4        V P                  # )z"Returns the mouse-review handlers.z"MOUSE REVIEW: Refreshing handlers.T)r	   rD   rE   _setup_handlersr   )r1   r   rF   r   r&   r   ZMouseReviewer.get_handlers  s:     6C 0 0#t<  "~~r)   c               rI   r   r#   r$   r%   r&   r'   r     s     9 9 9r)   c                s    / V n         \        P                  ! V P                  \        P
                  4      V P                   R&   Rp\        P                  ! \        P                  VR4       R# )z.Sets up the mouse-review input event handlers.toggleMouseReviewHandlerzMOUSE REVIEW: Handlers set up.TN)	r   r   ZInputEventHandlertoggler   ZMOUSE_REVIEW_TOGGLEr	   rD   rE   r1   rF   r   r&   r   ZMouseReviewer._setup_handlers  sY      )),,. 	12
 /E,,c48r)   c               rI   r   r#   r$   r%   r&   r'   r     s     9 9 9r)   c           	     sH   \         P                  ! 4       V n        V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          4      4       Rp\        P                  ! \        P                  VR4       R# )z&Sets up the mouse-review key bindings.r   r   zMOUSE REVIEW: Bindings set up.TN)r   r   r   ZaddZ
KeyBindingZDEFAULT_MODIFIER_MASKZNO_MODIFIER_MASKr   r	   rD   rE   r   r   r&   r   ZMouseReviewer._setup_bindings  su     %002""11,,9:	<	= /E,,c48r)   c               rI   r   r#   r$   r%   r&   r'   r     s     * *$ *r)   c                s   \         '       g2   Rp\        P                  ! \        P                  VR4       RV n        R# \
        P                  ! 4       P                  4       pRpRpV'       d:   \        P                  ! 4       P                  \        P                  ! V4      V4      pV'       d   VP                  P                  V4      p\        W$VR7      V n        V P                   P#                  R4       \$        P&                  P)                  4       pVf
   RV n        R# VP+                  4       pV'       d   VP-                  4        W`n        VP1                  4       V n        V P2                  '       d   V P5                  4        VP7                  RV P8                  4      pWPP:                  V&   VP7                  RV P<                  4      pWPP:                  V&   RV n        R# )	zActivates mouse review.r   TFN)r   rg   r   	mouse:abszwindow-stacking-changedzactive-workspace-changed)r   r	   rD   rE   r   r
   rZ   get_locus_of_focusr   
get_scriptr   get_applicationr~   Ztop_level_objectre   r   r   Zregisterr   Screenget_defaultget_windows_stackedreverser   get_active_workspacer   _update_workspace_windowsZconnect_on_stacking_changedr   _on_workspace_changed)r1   rF   r   r   rg   screenstackedZis   &       r&   r   ZMouseReviewer.activate  su    %$=C 0 0#t< DL '')<<>#//1<<[=X=XY\=]_bcF$$55c:E#/CV#T %%k2((*> DL ,,.OO ' 557???**,NN4d6O6OP%!NN5t7Q7QR%!r)   c               rI   r   r#   r$   r%   r&   r'   r     s      D r)   c                s    V P                   P                  R4       V P                  P                  4        F  w  r4VP                  V4       K  	  / V n        RV n
        . V n        . V n        V P                  P                  4        RV n        R#   \        P                   d6   pRT 2p\        P
                  ! \        P                  TR4        Rp?LRp?ii ; i)zDeactivates mouse review.r   z<MOUSE REVIEW: Exception deregistering 'mouse:abs' listener: TNF)r   Z
deregisterr   ZGErrorr	   rD   rE   r   ZitemsZ
disconnectr   r   r   r   Zclearr   )r1   ZerrorrF   Zkeyvaluer]   r&   
deactivateZMouseReviewer.deactivate  s    	=  ++K8
 ++113JCS! 4! {{ 	=PQVPWXC 0 0#t<<	=s   B C%+CCc                sJ   \         '       g   R# V P                  '       g   R# V P                  P                  4       p\        P                  ! 4       V P                  P                  4       ,
          R8  d.   RVR.p\        P                  ! \        P                  VR4       R# V# )z-Returns the accessible object being reviewed.Ng?zMOUSE REVIEW: Treatingzas staleT)	r   r   r   r<   rn   rv   r	   print_tokensrE   )r1   r   tokensr   r&   get_current_itemZMouseReviewer.get_current_item  s{     %$|||&&11399;11::<<sB.Z@Fu//>
r)   c               rI   rU   r#   r$   r%   r&   r'   r     s     O O Or)   c                sJ    \         P                  ! 4       P                  R4      # )z8Returns whether mouse review is enabled (requires Wnck).enableMouseReview)r   rZ   Zget_settingrK   rL   r&   r   ZMouseReviewer.get_is_enabled  s      ++-99:MNNr)   c               r   )r   r   r5   r!   r#   r$   r%   r&   r'   r     s      D T r)   c                s   \         '       g+   Rp\        P                  ! \        P                  VR4       R# RV R2p\        P                  ! \        P                  VR4       WP                  8X  d   R# \
        P                  ! 4       P                  RV4       V'       d   V P                  4        R# V P                  4        R# )z5Sets whether mouse review is enabled (requires Wnck).r   TFz-MOUSE REVIEW: Setting enable mouse review to Z.r   )
r   r	   rD   rE   r   r   rZ   Zset_settingr   r   )r1   r   rF   r   r&   set_is_enabledZMouseReviewer.set_is_enabled  s     %$=C 0 0#t<=eWAFE,,c48LL $$&223FNMMO  OOr)   Nc               s(    V ^8  d   QhRRRRRRRR/# )r   r   zdefault.Scripteventzinput_event.InputEvent | Nonenotify_userr5   r!   r#   r$   r%   r&   r'   r   -  s2       - 	
 
r)   c                s:   RVRVRV.p\         P                  ! \         P                  VR4       V P                  '       * pV P	                  V4      '       g   R# V'       d;   V'       d   \
        P                  pM\
        P                  pVP                  V4       R# )z1Toggle mouse reviewing on or off (requires Wnck).zMOUSE REVIEW: Toggle. Script:zEvent:znotify_user:TF)	r	   r   rE   r   r   r   ZMOUSE_REVIEW_ENABLEDZMOUSE_REVIEW_DISABLEDZpresent_message)r1   r   r   r   r   Z	new_staterF   s   &&&&   r&   r   ZMouseReviewer.toggle,  s     26E>;@5++VT:$	""9--3344""3'r)   c               rI   r   r#   r$   r%   r&   r'   r   F  s     @ @4 @r)   c                	s    V P                    Uu. uF(  pVP                  V P                  4      '       g   K&  VNK*  	  upV n        R # u upi r*   )r   Zis_on_workspacer   r   )r1   wr   r&   r   Z'MouseReviewer._update_workspace_windowsF  sC    $($5$5 @$5q--doo> $5 @ @s
   #AAc               rI   r   r#   r$   r%   r&   r'   r   J  s     - -d -r)   c                s    VP                  4       pVP                  4        W n        V P                  '       d   V P	                  4        R# R# )z3Callback for Wnck's window-stacking-changed signal.N)r   r   r   r   r   )r1   r   r   r   r&   r   Z"MouseReviewer._on_stacking_changedJ  s<     ,,.#???**, r)   c               rI   r   r#   r$   r%   r&   r'   r   S  s     ) )d )r)   c                sP    VP                  4       V n        V P                  4        R# )z4Callback for Wnck's active-workspace-changed signal.N)r   r   r   )r1   r   Z_prev_wss   &&&r&   r   Z#MouseReviewer._on_workspace_changedS  s      !557&&(r)   c               s$    V ^8  d   QhRRRRRR/# )r   point_xr   point_yr!   ztuple[object, int, int]r#   r$   r%   r&   r'   r   Y  s"     + +3 + +I` +r)   c                s  aa RpV P                    Fd  pVP                  4       '       d   K  VP                  4       w  rVrxYQu;8:  d   WW,           8:  g   KD  M KH  Ybu;8:  d   Wh,           8:  g   K^  M Kb  Tp M	  V'       g   R# VP                  4       p	V	'       g   R# \        P
                  ! V	P                  4       4      p
V
'       g   R# VX,
          oVX,
          o\        \        P                  ! V
VV3R l4      4      p\        V4      ^8X  d   V^ ,          SS3# VP                  4       pV Uu. uF"  p\        P                  ! V4      V8X  g   K   VNK$  	  pp\        V4      ^8X  d   V^ ,          SS3# V Uu. uF#  p\        P                  ! V4      '       g   K!  VNK%  	  pp\        V4      ^8X  d   V^ ,          SS3# R# u upi u upi )zVReturns the accessible window and window based coordinates for the screen coordinates.Nc                s4   < \         P                  ! V SS4      # r*   )r   Zobject_contains_point)r>   
relative_x
relative_ys   &r&   <lambda>Z;MouseReviewer._accessible_window_at_point.<locals>.<lambda>w  s    ;<<Q
JWr)   )NrY   rY   )r   Zis_minimizedZget_client_window_geometryr   r   Zget_application_with_pidZget_pidlistr   Ziter_childrenlenr   Z	is_active)r1   r   r   windowr   r>   r?   r@   rA   Z
window_appZappZ
candidatesZnameZoZmatchesr   r   s   &&&            @@r&   _accessible_window_at_pointZ)MouseReviewer._accessible_window_at_pointY  s    A~~"#">">"@A%(qy((Q-GQZ-G-G  ++-
22:3E3E3GH q[
q[
(00WY Z
z?aa=*j88 (IjH,=,=a,@D,H11jIw<11:z:55%Bg)>)>q)A11gBw<11:z:55 J Cs   2GG<G
G
c               rI   rU   r#   r$   r%   r&   r'   r     s       r)   c                s    \         P                  ! V4      p\        \        R VP	                  R4      4      4      p\        V4      ^8  # )z4Returns True if obj has multiple paragraphs of text.c                s"    V P                  4       # r*   )rB   r   rL   r&   r   Z:MouseReviewer._is_multi_paragraph_object.<locals>.<lambda>  s
    qwwyr)   z

)r   r   r   ZfilterZsplitr   )r1   r   r   Zchunkss   &&  r&   _is_multi_paragraph_objectZ(MouseReviewer._is_multi_paragraph_object  s=     $$S)f0&,,v2FGH6{Qr)   c               rI   r   r#   r$   r%   r&   r'   r     s     4+ 4+ 4+r)   c                s.   VP                   VP                  r2V P                  W#4      w  rEpRV RV R2V.p\        P                  ! \        P
                  VR4       V'       g   R# \        P                  ! 4       P                  \        P                  ! V4      4      pV'       g   R# \        P                  ! 4       P                  4       p	\        P                  ! V	4      '       d   Rp
MD\        P                  ! V	4      '       d   T	p
M%\        P                   ! V	\        P                  4      p
RpV
'       dK   \"        P$                  ! WV4      pRV
RV RV R2V.p\        P                  ! \        P
                  VR4       VfK   \"        P$                  ! WEV4      pRVRV RV R2V.p\        P                  ! \        P
                  VR4       \        P                  ! 4       P                  \        P                  ! V4      V4      pV
'       d~   V'       dv   \        P                   ! V\        P                  4      '       gK   \"        P&                  ! W4      '       d/   RVR	V
.p\        P                  ! \        P
                  VR4       R# \(        P*                  P,                  pV P.                  P1                  4       w  rppYu;8:  d   VV,           8:  d>   M M:V P.                  P3                  4       '       d   \(        P*                  P4                  p\7        V P8                  4      '       d+   R
p\        P:                  ! \        P
                  VR4       R# \=        WVWWH4      pVP?                  V P.                  4      '       d
   VV n        R# R# )zCallback for mouse:abs events.zMOUSE REVIEW: Window at (z, z) isTNzMOUSE REVIEW: Object inzat (zMOUSE REVIEW:zbelieved to be underz MOUSE REVIEW: Mouse moved again.) Zdetail1Zdetail2r   r	   r   rE   r   rZ   r   r   r   r
   r   r   Zis_deadr   r   r   Zget_descendant_at_pointZobjects_overlapr   r|   ZLINEr   r=   rC   r}   r   r   rD   re   r^   )r1   r   r   r   r   Zwindow_xZwindow_yr   r   ZfocusZmenur   rp   ri   r?   Z_widthrA   rF   r   s   &&                 r&   _on_mouse_movedZMouseReviewer._on_mouse_moved  s    !==%--%)%E%Eg%W"(-gYb	FO5++VT:++-889T9TU[9\]))+>>@E""D  ''D))%1D1DED55dhOC/hZr(SW7XZ]^Fu//>;55fQC/4zH:UY9Z\_`Fu//>++-889T9TU[9\^abC 6 6sK<O<O P P**355)30FM""5#3#3VTB++00 $ 8 8 I I Kvv&AJ&4+C+C+N+N+P+P//44Kt  !!4C 0 0#t<8sP;;t//00'*D$ 1r)   c               rI   r   r#   r$   r%   r&   r'   r     s     : : :r)   c                	s*   V P                   '       g   R # V P                   P                  4       p\        V P                   4      '       d   R # \        P                  ! 4       pRVP                  R.p\
        P                  ! \
        P                  VR4       RV n        V P                  V4       RV n        R\        P                  ! 4       V,
          R R2pVRVP                   R	2,          p\
        P                  ! \
        P                  VR4       R # )
Nz
vvvvv PROCESS OBJECT EVENTZvvvvvFTzTOTAL PROCESSING TIME: z.4fr:   z^^^^^ PROCESS OBJECT EVENT z ^^^^^
)r   Zpopleftr   rn   typer	   r   rE   r   r   rD   )r1   r   Z
start_timer   rF   r]   r&   _process_eventZMouseReviewer._process_event  s       !!))+t  !!YY[
0%**gF5++VU;"U##'		j(@'ERH,UZZLAAE,,c59r)   c               rI   r   r#   r$   r%   r&   r'   r     s     6 6$ 6r)   c                s    VP                   P                  R4      '       d?   V P                  P                  V4       \        P
                  ! ^2V P                  4       R# R# )z(Generic listener for events of interest.r   N)r   Z
startswithr   Zappendr   Ztimeout_addr   )r1   r   r7   r&   r   ZMouseReviewer._listener  sH     ::  --$$U+R!4!45 .r)   )r   r   r   r   r   r   r   r   r   r   r   )FTr   )NTr*   )r_   r`   ra   rb   rc   r2   r   r   r   r   r   r   r   r   Zgetterr   Zsetterr   Zcommandr   r   r   r   r   r   r   r   r   rd   r#   r)   r&   r   r   n  s    2899*X$$ O O
  *  2@-)+Z4+l:(6 6r)   r   c               rI   )r   r!   r   r#   r$   r%   r&   r'   r'     s      m r)   c                 s    \         # )z%Returns the Mouse Reviewer singleton.)	_reviewerr#   r)   r&   get_reviewerr     s
     r)   )6rc   Z
__future__r    Z__id__Z__version__Z__date__Z__copyright__Z__license__r   Zosrn   Zcollectionsr   Ztypingr   ZgiZrequire_versionZgi.repositoryr   r   r   ZenvironZgetZlowerr   r   r   Z	Exceptionr   r   r   r	   r
   r   r   r   r   r   r   Zax_componentr   Z	ax_objectr   Zax_textr   Zax_utilitiesr   Zscriptsr   r   re   r   r   r   r#   r)   r&   <module>r      s%  :  #2  	     	   7E "   		zz~~("-335B
65)& $ 7 7 9 E          * %   % f fRr rjn6 n6b O	M  		s   A$E EE