Skip to content

fix: Corrige assertion gtk_box_remove ao fechar janela/aba#1

Open
xathay wants to merge 1 commit into
big-comm:mainfrom
xathay:fix/gtk-box-remove-assertion
Open

fix: Corrige assertion gtk_box_remove ao fechar janela/aba#1
xathay wants to merge 1 commit into
big-comm:mainfrom
xathay:fix/gtk-box-remove-assertion

Conversation

@xathay

@xathay xathay commented Mar 22, 2026

Copy link
Copy Markdown

Resumo

Corrige GTK assertion failure que ocorre toda vez que uma janela ou aba do Nautilus é fechada:

gtk_box_remove: assertion 'gtk_widget_get_parent (child) == (GtkWidget *)box' failed

Este bug contribui para instabilidade do Nautilus — em casos extremos, o processo deixa de responder a ativações via DBus, fazendo com que cliques na Dock não abram novas janelas.

Causa raiz

No src/nautilus-window-slot.c do fork, a introdução do content_box como container intermediário para acomodar o terminal embutido criou uma inconsistência:

Operação Função Container usado
Adicionar content_view create_and_bind_new_content_view() self->content_box
Remover content_view nautilus_window_slot_dispose() self->vbox (ERRADO)

No upstream, content_box não existe — content_view é adicionado e removido do vbox de forma consistente. Quando o fork introduziu o content_box, atualizou o append mas não atualizou o remove no dispose().

Fix

Uma linha no prepare() do PKGBUILD via sed:

// ANTES (bug):
gtk_box_remove (GTK_BOX (self->vbox), GTK_WIDGET (self->content_view));

// DEPOIS (fix):
gtk_box_remove (GTK_BOX (self->content_box), GTK_WIDGET (self->content_view));

Nota: O fix ideal é aplicar diretamente no fork GitLab (talesam/nautilus). O sed no PKGBUILD é uma solução temporária até que o fix seja integrado ao fonte.

Validação

  • Compilado e testado em máquina real (BigCommunity GNOME, GNOME Shell 49.4)
  • Antes: assertion disparada em 100% dos fechamentos de janela
  • Depois: zero erros gtk_box_remove

Test plan

  • Compilar com makepkg -s e instalar com pacman -U
  • Abrir e fechar janelas/abas do Nautilus
  • Verificar logs: journalctl --user -n 50 | grep gtk_box_remove
  • Confirmar que o fix deve ser aplicado no fork GitLab (talesam/nautilus)

content_view é adicionado ao content_box em create_and_bind_new_content_view(),
mas nautilus_window_slot_dispose() remove do vbox (container errado).
Isso dispara em todo fechamento de janela/aba:
  gtk_box_remove: assertion 'gtk_widget_get_parent (child) == (GtkWidget *)box' failed

A correção altera o container de remoção de self->vbox para self->content_box,
correspondendo ao container onde content_view foi realmente adicionado.

Testado no BigCommunity GNOME (GNOME Shell 49.4) - assertion não ocorre mais.
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