From 704fc2b2cf2d7fc8ddf2498cb8bb4e97610d02ca Mon Sep 17 00:00:00 2001 From: Jonatas Esteves Date: Tue, 7 Jan 2025 23:47:04 -0300 Subject: [PATCH] envvars-dialog: Center text entry vertically Traverse AdwEntryRow's widget tree to remove visibility of the title labels and change alignment of the text entry to center. This implementation is tightly coupled with the internal representation of AdwEntryRow. Checks were added to prevent crashing if that representation changes, but in such case the layout may get askew. --- bottles/frontend/windows/envvars.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/bottles/frontend/windows/envvars.py b/bottles/frontend/windows/envvars.py index 736c77afbdd..6d7bb2fa8c3 100644 --- a/bottles/frontend/windows/envvars.py +++ b/bottles/frontend/windows/envvars.py @@ -17,9 +17,12 @@ from gi.repository import Gtk, GLib, Adw +from bottles.backend.logger import Logger from bottles.frontend.utils.gtk import GtkUtils from bottles.frontend.utils.sh import ShUtils +logging = Logger() + @Gtk.Template(resource_path="/com/usebottles/bottles/env-var-entry.ui") class EnvVarEntry(Adw.EntryRow): @@ -44,6 +47,21 @@ def __init__(self, parent, env, **kwargs): self.connect("apply", self.__save) self.btn_remove.connect("clicked", self.__remove) + try: + widget = self.get_child().get_first_child().get_next_sibling().get_first_child() + while isinstance(widget, Gtk.Label): + widget.set_visible(False) + widget = widget.get_next_sibling() + + if isinstance(widget, Gtk.Text): + widget.set_valign(Gtk.Align.CENTER) + else: + raise RuntimeError("Could not find widget Gtk.Text") + except Exception as e: + logging.error( + f"{type(e)}: {e}\nEnvVarEntry could not find text widget. Did AdwEntryRow change it's widget tree?" + ) + def __save(self, *_args): """ Change the env var value according to the