From de865bb39ad08d42019b5d3c790ef52ad6dd0ecd Mon Sep 17 00:00:00 2001 From: luna Date: Tue, 2 May 2023 05:17:59 -0500 Subject: [PATCH 1/4] Changed GTK detailedlist to show contents when in a box. Still need to get it to set min_size based on contents. --- gtk/src/toga_gtk/widgets/detailedlist.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gtk/src/toga_gtk/widgets/detailedlist.py b/gtk/src/toga_gtk/widgets/detailedlist.py index 37663aa3a7..3adeb8f486 100644 --- a/gtk/src/toga_gtk/widgets/detailedlist.py +++ b/gtk/src/toga_gtk/widgets/detailedlist.py @@ -31,7 +31,9 @@ def create(self): self.scrolled_window = Gtk.ScrolledWindow() - self.scrolled_window.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) + self.scrolled_window.set_policy( + Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC + ) self.scrolled_window.set_min_content_width(self.interface._MIN_WIDTH) self.scrolled_window.set_min_content_height(self.interface._MIN_HEIGHT) @@ -43,7 +45,7 @@ def create(self): self.scroll_button.set_scroll(lambda: self.scroll_to_row(-1)) self.native = Gtk.Overlay() - self.native.add_overlay(self.scrolled_window) + self.native.add(self.scrolled_window) self.refresh_button.overlay_over(self.native) self.scroll_button.overlay_over(self.native) From d6fcaedeb329737fb2500c9327bcf1814e345d76 Mon Sep 17 00:00:00 2001 From: luna Date: Tue, 2 May 2023 05:24:16 -0500 Subject: [PATCH 2/4] Added changes file --- changes/1924_bugfix_rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 changes/1924_bugfix_rst diff --git a/changes/1924_bugfix_rst b/changes/1924_bugfix_rst new file mode 100644 index 0000000000..1237c13aa3 --- /dev/null +++ b/changes/1924_bugfix_rst @@ -0,0 +1 @@ +Fixed bug causing detailedlist to not show when put in a box without a specified width on GTK From 37bdffa2cb296cd35c22ae3849ecdce23e978703 Mon Sep 17 00:00:00 2001 From: luna Date: Tue, 2 May 2023 05:27:17 -0500 Subject: [PATCH 3/4] Added changes file --- changes/{1924_bugfix_rst => 1924.bugfix.rst} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename changes/{1924_bugfix_rst => 1924.bugfix.rst} (100%) diff --git a/changes/1924_bugfix_rst b/changes/1924.bugfix.rst similarity index 100% rename from changes/1924_bugfix_rst rename to changes/1924.bugfix.rst From 122fbbda2d2077e48f5cce202aa451e9b47c8b19 Mon Sep 17 00:00:00 2001 From: luna Date: Tue, 2 May 2023 12:51:03 -0500 Subject: [PATCH 4/4] Widget now updates width based on widest list_box child. --- gtk/src/toga_gtk/widgets/detailedlist.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gtk/src/toga_gtk/widgets/detailedlist.py b/gtk/src/toga_gtk/widgets/detailedlist.py index 3adeb8f486..a145cf1472 100644 --- a/gtk/src/toga_gtk/widgets/detailedlist.py +++ b/gtk/src/toga_gtk/widgets/detailedlist.py @@ -59,6 +59,8 @@ def create(self): self.right_click_gesture.set_propagation_phase(Gtk.PropagationPhase.BUBBLE) self.right_click_gesture.connect("pressed", self.gtk_on_right_click) + # print(self.scrolled_window.get_children()[0].get_children()[0].get_children()) + def row_factory(self, item): """ Args: @@ -212,6 +214,16 @@ def _list_items_changed(self): If either of those things changes the buttons need to be notified to recalculate their positions. """ + self._update_scrolled_window_width() self.refresh_button.list_changed() self.scroll_button.list_changed() return True + + def _update_scrolled_window_width(self): + # Checks if the widest child of the list_box is wider than the min_width. + # If so, changes the width of the interface. + new_width = self.interface._MIN_WIDTH + for child in self.list_box.get_children(): + if child.get_preferred_width().natural_width > new_width: + new_width = child.get_preferred_width().natural_width + self.interface.intrinsic.width = new_width