Skip to content

Fix GNOME 50 shell crash when closing SearchLight on outside click - #170

Open
BtraRahul wants to merge 2 commits into
icedman:mainfrom
BtraRahul:fix/gnome50-click-outside-shell-crash
Open

BtraRahul wants to merge 2 commits into
icedman:mainfrom
BtraRahul:fix/gnome50-click-outside-shell-crash

Conversation

@BtraRahul

Copy link
Copy Markdown

Summary

  • Fixes a GNOME Shell crash (SIGABRT) that occurred when opening SearchLight and clicking outside the empty search overlay on the homescreen, which dropped the session back to the GDM login screen.
  • Defers show()/hide() actor-tree work out of input and focus handlers so Clutter 18 on GNOME 50 no longer aborts during _release_ui() teardown.
  • Hides the overview search entry before detaching it and adds a re-entrancy guard on hide() to prevent nested teardown during focus changes.
  • Scopes _remove_events() to show-session listeners only, so permanent enable() listeners (overview, app-state, window-created) survive after close.
  • Adds a full-monitor click catcher so outside clicks close the overlay safely instead of passing through to the desktop.
  • Updates overview signal wiring from deprecated overview-showing/overview-hidden to showing/hidden, improving GNOME 50 compatibility for overview tracking.

This addresses the same root cause discussed in #82, #133, and #166, and complements open PR #164.

Test environment

  • OS: Ubuntu 26.04 LTS
  • GNOME Shell: 50.1 (Wayland)
  • Extension version tested: 102

Test plan

  • Open SearchLight on empty homescreen and click outside — closes cleanly, no login screen
  • Close via Escape key
  • Toggle open/close via keyboard shortcut
  • Toggle via panel icon
  • Open/close repeatedly — overview tracking still works after first close
  • Extension reloads without JS errors (gnome-extensions disable/enable search-light@icedman.github.com)
  • Launch a search result from the overlay
  • Verify on additional GNOME 50 setups if available

Made with Cursor

BtraRahul and others added 2 commits July 17, 2026 23:07
Defer show/hide actor-tree changes out of input handlers, unmap search
widgets before detaching them, and guard against re-entrant hide() calls so
Clutter 18 no longer aborts the session when the overlay is dismissed.

Co-authored-by: Cursor <cursoragent@cursor.com>
…ones.

Several close paths only set opacity to zero, leaving reactive chrome and
the click catcher intercepting pointer events after the overlay looked
hidden. Route those paths through full hide cleanup and release input
capture immediately when closing.

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant