@@ -389,15 +389,14 @@ impl EventCx<'_> {
389389 // IMPORTANT: This is set AFTER event dispatch, matching Chromium's timing.
390390 // This allows handlers during PointerDown to call releasePointerCapture()
391391 // to prevent implicit capture if desired.
392- if let Event :: Pointer ( PointerEvent :: Down ( PointerButtonEvent { pointer, .. } ) ) = event {
393- if pointer. pointer_type == PointerType :: Touch {
394- if let Some ( pointer_id) = pointer. pointer_id {
395- // Only set implicit capture if no explicit capture was set during dispatch
396- // and no explicit release was requested
397- if !self . window_state . has_pending_capture ( pointer_id) {
398- self . window_state . set_pointer_capture ( pointer_id, target) ;
399- }
400- }
392+ if let Event :: Pointer ( PointerEvent :: Down ( PointerButtonEvent { pointer, .. } ) ) = event
393+ && pointer. pointer_type == PointerType :: Touch
394+ && let Some ( pointer_id) = pointer. pointer_id
395+ {
396+ // Only set implicit capture if no explicit capture was set during dispatch
397+ // and no explicit release was requested
398+ if !self . window_state . has_pending_capture ( pointer_id) {
399+ self . window_state . set_pointer_capture ( pointer_id, target) ;
401400 }
402401 }
403402
@@ -535,12 +534,10 @@ impl EventCx<'_> {
535534 processed |= self . dispatch_to_view ( id, event, true ) . is_processed ( ) ;
536535 }
537536
538- if !processed {
539- if let Some ( listener) = event. listener ( ) {
540- processed |= main_view_id
541- . apply_event ( & listener, event)
542- . is_some_and ( |prop| prop. is_processed ( ) ) ;
543- }
537+ if !processed && let Some ( listener) = event. listener ( ) {
538+ processed |= main_view_id
539+ . apply_event ( & listener, event)
540+ . is_some_and ( |prop| prop. is_processed ( ) ) ;
544541 }
545542
546543 if !processed {
@@ -557,16 +554,15 @@ impl EventCx<'_> {
557554 {
558555 let backwards = modifiers. contains ( Modifiers :: SHIFT ) ;
559556 view_tab_navigation ( root_id, self . window_state , backwards) ;
560- } else if * modifiers == Modifiers :: ALT {
561- if let Key :: Named (
557+ } else if * modifiers == Modifiers :: ALT
558+ && let Key :: Named (
562559 name @ ( NamedKey :: ArrowUp
563560 | NamedKey :: ArrowDown
564561 | NamedKey :: ArrowLeft
565562 | NamedKey :: ArrowRight ) ,
566563 ) = key
567- {
568- view_arrow_navigation ( * name, self . window_state , root_id) ;
569- }
564+ {
565+ view_arrow_navigation ( * name, self . window_state , root_id) ;
570566 }
571567 }
572568
@@ -580,16 +576,14 @@ impl EventCx<'_> {
580576 ..
581577 } )
582578 ) ;
583- if keyboard_trigger_end {
584- if let Some ( id) = self . window_state . active {
585- if self
586- . window_state
587- . has_style_for_sel ( id, StyleSelector :: Active )
588- {
589- id. request_style_for_selector_recursive ( StyleSelector :: Active ) ;
590- }
591- self . window_state . active = None ;
579+ if keyboard_trigger_end && let Some ( id) = self . window_state . active {
580+ if self
581+ . window_state
582+ . has_style_for_sel ( id, StyleSelector :: Active )
583+ {
584+ id. request_style_for_selector_recursive ( StyleSelector :: Active ) ;
592585 }
586+ self . window_state . active = None ;
593587 }
594588 }
595589 }
@@ -674,20 +668,19 @@ impl EventCx<'_> {
674668 view_state : & std:: cell:: RefCell < crate :: view:: ViewState > ,
675669 event : & Event ,
676670 ) {
677- if let Event :: Pointer ( PointerEvent :: Down ( PointerButtonEvent { state, .. } ) ) = event {
678- if view_state. borrow ( ) . computed_style . get ( Focusable ) {
679- let rect = view_id . get_size ( ) . unwrap_or_default ( ) . to_rect ( ) ;
680- if rect . contains ( state . logical_point ( ) ) {
681- self . window_state . update_focus ( view_id , false ) ;
682- }
671+ if let Event :: Pointer ( PointerEvent :: Down ( PointerButtonEvent { state, .. } ) ) = event
672+ && view_state. borrow ( ) . computed_style . get ( Focusable )
673+ {
674+ let rect = view_id . get_size ( ) . unwrap_or_default ( ) . to_rect ( ) ;
675+ if rect . contains ( state . logical_point ( ) ) {
676+ self . window_state . update_focus ( view_id , false ) ;
683677 }
684678 }
685- if let Event :: Pointer ( PointerEvent :: Move ( _) ) = event {
686- if let Some ( cursor) = view_state. borrow ( ) . combined_style . builtin ( ) . cursor ( ) {
687- if self . window_state . cursor . is_none ( ) {
688- self . window_state . cursor = Some ( cursor) ;
689- }
690- }
679+ if let Event :: Pointer ( PointerEvent :: Move ( _) ) = event
680+ && let Some ( cursor) = view_state. borrow ( ) . combined_style . builtin ( ) . cursor ( )
681+ && self . window_state . cursor . is_none ( )
682+ {
683+ self . window_state . cursor = Some ( cursor) ;
691684 }
692685 }
693686
@@ -857,46 +850,45 @@ impl EventCx<'_> {
857850 self . window_state . hovered . push ( view_id) ;
858851 }
859852 let vs = view_state. borrow ( ) ;
860- if let Some ( cursor) = vs. combined_style . builtin ( ) . cursor ( ) {
861- if self . window_state . cursor . is_none ( ) {
862- self . window_state . cursor = Some ( cursor ) ;
863- }
853+ if let Some ( cursor) = vs. combined_style . builtin ( ) . cursor ( )
854+ && self . window_state . cursor . is_none ( )
855+ {
856+ self . window_state . cursor = Some ( cursor ) ;
864857 }
865858 }
866859 }
867860
868861 // Handle drag state updates
869- if view_id. can_drag ( ) {
870- if let Some ( ( _, drag_start) ) = self
862+ if view_id. can_drag ( )
863+ && let Some ( ( _, drag_start) ) = self
871864 . window_state
872865 . drag_start
873866 . as_ref ( )
874867 . filter ( |( drag_id, _) | drag_id == & view_id)
875- {
876- let offset = point - * drag_start;
868+ {
869+ let offset = point - * drag_start;
877870
878- if let Some ( dragging) = self
879- . window_state
880- . dragging
881- . as_mut ( )
882- . filter ( |d| d. id == view_id && d. released_at . is_none ( ) )
883- {
884- // Update position while dragging
885- dragging. offset = drag_start. to_vec2 ( ) ;
886- self . window_state . request_paint ( view_id) ;
887- } else if offset. x . abs ( ) + offset. y . abs ( ) > 1.0 {
888- // Start dragging when moved > 1px
889- self . window_state . active = None ;
890- self . window_state . dragging = Some ( DragState {
891- id : view_id,
892- offset : drag_start. to_vec2 ( ) ,
893- released_at : None ,
894- release_location : None ,
895- } ) ;
896- self . update_active ( view_id) ;
897- self . window_state . request_paint ( view_id) ;
898- view_id. apply_event ( & EventListener :: DragStart , event) ;
899- }
871+ if let Some ( dragging) = self
872+ . window_state
873+ . dragging
874+ . as_mut ( )
875+ . filter ( |d| d. id == view_id && d. released_at . is_none ( ) )
876+ {
877+ // Update position while dragging
878+ dragging. offset = drag_start. to_vec2 ( ) ;
879+ self . window_state . request_paint ( view_id) ;
880+ } else if offset. x . abs ( ) + offset. y . abs ( ) > 1.0 {
881+ // Start dragging when moved > 1px
882+ self . window_state . active = None ;
883+ self . window_state . dragging = Some ( DragState {
884+ id : view_id,
885+ offset : drag_start. to_vec2 ( ) ,
886+ released_at : None ,
887+ release_location : None ,
888+ } ) ;
889+ self . update_active ( view_id) ;
890+ self . window_state . request_paint ( view_id) ;
891+ view_id. apply_event ( & EventListener :: DragStart , event) ;
900892 }
901893 }
902894
@@ -928,25 +920,21 @@ impl EventCx<'_> {
928920 if pointer. is_primary_pointer ( ) && button. is_none_or ( |b| b == PointerButton :: Primary ) {
929921 // Show popout menu on non-macOS (pointer up)
930922 #[ cfg( not( target_os = "macos" ) ) ]
931- if on_view {
932- if let Some ( result) = self . try_show_popout_menu ( view_id) {
933- return Some ( result) ;
934- }
923+ if on_view && let Some ( result) = self . try_show_popout_menu ( view_id) {
924+ return Some ( result) ;
935925 }
936926
937927 // Handle drag drop
938928 if !directed {
939- if on_view {
940- if let Some ( dragging) = self . window_state . dragging . as_mut ( ) {
941- let dragging_id = dragging. id ;
942- if view_id
943- . apply_event ( & EventListener :: Drop , event)
944- . is_some_and ( |prop| prop. is_processed ( ) )
945- {
946- self . window_state . dragging = None ;
947- self . window_state . request_paint ( view_id) ;
948- dragging_id. apply_event ( & EventListener :: DragEnd , event) ;
949- }
929+ if on_view && let Some ( dragging) = self . window_state . dragging . as_mut ( ) {
930+ let dragging_id = dragging. id ;
931+ if view_id
932+ . apply_event ( & EventListener :: Drop , event)
933+ . is_some_and ( |prop| prop. is_processed ( ) )
934+ {
935+ self . window_state . dragging = None ;
936+ self . window_state . request_paint ( view_id) ;
937+ dragging_id. apply_event ( & EventListener :: DragEnd , event) ;
950938 }
951939 }
952940 } else if let Some ( dragging) = self
@@ -1008,10 +996,8 @@ impl EventCx<'_> {
1008996 return Some ( result) ;
1009997 }
1010998
1011- if on_view {
1012- if let Some ( result) = self . try_show_context_menu ( view_id, state) {
1013- return Some ( result) ;
1014- }
999+ if on_view && let Some ( result) = self . try_show_context_menu ( view_id, state) {
1000+ return Some ( result) ;
10151001 }
10161002 }
10171003
0 commit comments