Crash when clicking on ActionRow
I'm creating an app using GTK4 with libadwaita via PyGObject. In the preferences window, I have a PreferencesGroup with ActionRows in it. But every time I click on one of them (activatable or not), it crashes with the following message:
Gtk-CRITICAL **: 23:00:22.970: gtk_accessible_get_at_context: assertion 'GTK_IS_ACCESSIBLE (self)' failed
category_row.ui
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="CategoryRow" parent="AdwActionRow">
<property name="title" translatable="yes">Category</property>
<property name="activatable">True</property>
<signal name="activated" handler="activate_handler" swapped="no" />
</template>
</interface>
window.ui
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="PreferencesWindow" parent="AdwPreferencesWindow">
<property name="default_height">300</property>
<property name="default_width">500</property>
<property name="modal">True</property>
<property name="search-enabled">False</property>
<child>
<object class="AdwPreferencesPage">
<property name="icon-name">preferences-system-symbolic</property>
<property name="title">General</property>
<child>
<object class="AdwPreferencesGroup" id="downloads_group">
<property name="title" translatable="yes">Downloads</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwPreferencesPage">
<property name="icon-name">folder-open-symbolic</property>
<property name="title">Categories</property>
<child>
<object class="AdwPreferencesGroup" id="categories_group">
<property name="title" translatable="yes">Categories</property>
<property name="description" translatable="yes">Add and edit your categories for auto-soting downloads. Note that changes only apply for new downloads.</property>
</object>
</child>
</object>
</child>
</template>
</interface>
category_row.py
import logging
from .category_editor import CategoryEditor
from gi.repository import Gtk, Adw
@Gtk.Template(resource_path="/com/github/ritzer/layout/preferences/category_row.ui")
class CategoryRow(Adw.ActionRow):
__gtype_name__ = "CategoryRow"
def __init__(self, category, settings, window=None, **kwargs):
super().__init__(**kwargs)
self.category = category
self.settings = settings
self.refresh_ui()
self.window = window
def refresh_ui(self):
self.set_title(self.category)
self.set_subtitle(self.settings["path"])
@Gtk.Template.Callback()
def activate_handler(self, *args):
logging.debug("Showing category editor")
self.editor = CategoryEditor(self.category, self.settings, self.update_ui, transient_for=self.window, application=self.window.get_application())
self.editor.show()
def update_ui(self, category, settings):
self.category = category
self.settings = settings
self.refresh_ui()
window.ui (Preference Window)
@Gtk.Template(resource_path="/com/github/ritzer/layout/preferences/window.ui")
class PreferencesWindow(Adw.PreferencesWindow):
__gtype_name__ = "PreferencesWindow"
categories_group = Gtk.Template.Child()
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.populate_categories()
def populate_categories(self):
self.categories = Settings.get().categories
for category, settings in self.categories.items():
self.categories_group.add(CategoryRow(category, settings))
self.append_add_button()
def append_add_button(self):
builder = Gtk.Builder()
builder.add_from_resource("/com/github/ritzer/layout/preferences/add_row.ui")
self.add_row = builder.get_object("add_row")
self.add_button = builder.get_object("add_button")
self.add_button.connect("clicked", self.add_handler)
self.categories_group.add(self.add_row)
def update_ui(self, category, settings):
self.categories_group.remove(self.add_row)
self.categories_group.add(CategoryRow(category, settings, self))
self.categories_group.add(self.add_row)
def add_handler(self, *args):
self.editor = CategoryEditor(None, None, self.update_ui, transient_for=self, application=self.get_application())
self.editor.show()
Note: This issue occured when I updated to stable libadwaita 1.0. It was working fine before.
Is it a bug or am I doing something wrong ?
Edited by المهدي الصالحي