Make Request and Response sections equal width

Replaces AdwOverlaySplitView with GtkPaned to allow both sections to have equal width by default. The divider automatically centers at 50/50 split when the window is first shown, while still allowing users to adjust it as needed.
This commit is contained in:
vesp 2025-12-18 12:38:07 +01:00
parent 06c4bd6dfa
commit 2943298a6e
2 changed files with 30 additions and 9 deletions

View File

@ -74,15 +74,17 @@
<!-- Split View: Request (left) | Response (right) -->
<child>
<object class="AdwOverlaySplitView" id="split_view">
<object class="GtkPaned" id="split_pane">
<property name="vexpand">True</property>
<property name="sidebar-position">start</property>
<property name="show-sidebar">True</property>
<property name="min-sidebar-width">300</property>
<property name="max-sidebar-width">600</property>
<property name="orientation">horizontal</property>
<property name="position">600</property>
<property name="shrink-start-child">False</property>
<property name="shrink-end-child">False</property>
<property name="resize-start-child">True</property>
<property name="resize-end-child">True</property>
<!-- LEFT SIDEBAR: Request Configuration -->
<property name="sidebar">
<!-- LEFT: Request Configuration -->
<property name="start-child">
<object class="GtkBox">
<property name="orientation">vertical</property>
@ -96,8 +98,8 @@
</object>
</property>
<!-- RIGHT CONTENT: Response Display -->
<property name="content">
<!-- RIGHT: Response Display -->
<property name="end-child">
<object class="GtkBox">
<property name="orientation">vertical</property>

View File

@ -36,6 +36,9 @@ class RosterWindow(Adw.ApplicationWindow):
url_entry = Gtk.Template.Child()
send_button = Gtk.Template.Child()
# Split pane
split_pane = Gtk.Template.Child()
# Containers for tabs
request_tabs_container = Gtk.Template.Child()
response_tabs_container = Gtk.Template.Child()
@ -68,6 +71,22 @@ class RosterWindow(Adw.ApplicationWindow):
# Add initial header row
self._add_header_row()
# Set split pane position to center after window is shown
self.connect("map", self._on_window_mapped)
def _on_window_mapped(self, widget):
"""Set split pane position to center when window is mapped."""
# Use idle_add to ensure the widget is fully allocated
GLib.idle_add(self._center_split_pane)
def _center_split_pane(self):
"""Center the split pane divider."""
# Get the allocated width of the paned widget
allocation = self.split_pane.get_allocation()
if allocation.width > 0:
self.split_pane.set_position(allocation.width // 2)
return False # Don't repeat
def _create_actions(self):
"""Create window-level actions."""
action = Gio.SimpleAction.new("toggle-history", None)