diff options
author | Lucas Fryzek <lucas.fryzek@fryzekconcepts.com> | 2024-10-06 22:22:03 +0100 |
---|---|---|
committer | Lucas Fryzek <lucas.fryzek@fryzekconcepts.com> | 2024-10-06 22:22:03 +0100 |
commit | 4ddbd0142fec70c8c9575d6f2f9b5ef93a93bd90 (patch) | |
tree | 1def62234d534d2f9d884adbb02b3ae926fb8467 | |
parent | b6ff088fcaee86f1518bf0e77a478638af50aa32 (diff) |
chat,main: Fix client crashes on Fedora version of Gtk4
-rw-r--r-- | src/chat.py | 6 | ||||
-rw-r--r-- | src/main.py | 14 |
2 files changed, 18 insertions, 2 deletions
diff --git a/src/chat.py b/src/chat.py index b82b4a3..743778e 100644 --- a/src/chat.py +++ b/src/chat.py @@ -102,6 +102,10 @@ class WeegtkChat(Adw.Bin): self.messages.scroll_to(n_items - 1, Gtk.ListScrollFlags.FOCUS) self.window.emit("scroll_child", Gtk.ScrollType.END, False) + def update_prompt(self): + # TODO code copied from QWeechat, figure out what I should do with it + pass + def setup_list_item(self, factory, list_item, *user_data): message = WeegtkMessage() list_item.set_child(message) @@ -161,7 +165,7 @@ class WeegtkChat(Adw.Bin): text = entry_buffer.get_text() entry_buffer.set_text("", 0) self.emit("buffer_input", self.data['full_name'], text) - + def open_file_dialog(self, dialog, result, caller): try: file = dialog.open_finish(result) diff --git a/src/main.py b/src/main.py index 53206be..5334516 100644 --- a/src/main.py +++ b/src/main.py @@ -50,6 +50,10 @@ class WeegtkApplication(Adw.Application): self.network.connect("message_from_weechat", self._network_weechat_msg) self.buffers = [] + # We need to keep track of buffer pages because some versions of Gtk + # crash. I believe its related to this: + # https://gitlab.gnome.org/GNOME/gtk/-/issues/5917 + self.pages = [] conf = config.read() if config.str_to_bool(conf["relay"]["autoconnect"]): @@ -66,8 +70,15 @@ class WeegtkApplication(Adw.Application): conf["relay"]["password"]) def clear_buffers(self): for buffer in self.buffers: - self.props.active_window.stack.remove(buffer) + res = self.props.active_window.stack.remove(buffer) self.buffers = [] + self.pages = [] + + def remove_buffer(self, index): + buf = self.buffers[index] + self.props.active_window.stack.remove(buf) + self.buffers.pop(index) + self.pages.pop(index) def disconnect(self, *args): self.network.disconnect_weechat() @@ -339,6 +350,7 @@ class WeegtkApplication(Adw.Application): page = self.props.active_window.stack.add_titled(buf, name=buf_name, title=buf_name) if buf.data["full_name"] == "core.weechat": self.props.active_window.set_page(page) + self.pages.insert(index, page) def buffer_input(self, source_object, full_name, text): if self.network.is_connected(): |