From 103772ee8fdc3b96c5f997455874d79060a62a3b Mon Sep 17 00:00:00 2001 From: "Jeffrey C. Ollie" Date: Sun, 6 Jul 2025 16:30:53 -0500 Subject: [PATCH] show child exited: make GTK banner transparent --- src/apprt/gtk/Surface.zig | 13 +++++++++++-- src/apprt/gtk/style.css | 12 ++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/apprt/gtk/Surface.zig b/src/apprt/gtk/Surface.zig index 7ea11bc17..f8d6dd5da 100644 --- a/src/apprt/gtk/Surface.zig +++ b/src/apprt/gtk/Surface.zig @@ -2504,7 +2504,7 @@ fn gtkStreamEnded(media_file: *gtk.MediaFile, _: *gobject.ParamSpec, _: ?*anyopa media_file.unref(); } -pub fn showChildExited(self: *Surface, _: apprt.surface.Message.ChildExited) (error{})!void { +pub fn showChildExited(self: *Surface, info: apprt.surface.Message.ChildExited) (error{})!void { if (!adw_version.supportsBanner()) return; const warning_box = gtk.Box.new(.vertical, 0); @@ -2516,7 +2516,16 @@ pub fn showChildExited(self: *Surface, _: apprt.surface.Message.ChildExited) (er const banner = adw.Banner.new(warning_text); banner.setRevealed(1); - warning_box.append(banner.as(gtk.Widget)); + const banner_widget = banner.as(gtk.Widget); + + banner_widget.addCssClass("child_exited"); + + if (info.exit_code == 0) + banner_widget.addCssClass("child_exited_normally") + else + banner_widget.addCssClass("child_exited_abnormally"); + + warning_box.append(banner_widget); self.overlay.addOverlay(warning_box.as(gtk.Widget)); } diff --git a/src/apprt/gtk/style.css b/src/apprt/gtk/style.css index 2051ab1e3..f3106105f 100644 --- a/src/apprt/gtk/style.css +++ b/src/apprt/gtk/style.css @@ -93,3 +93,15 @@ window.ssd.no-border-radius { margin-left: 4px; margin-right: 8px; } + +banner.child_exited_normally revealer widget { + background-color: rgba(38, 162, 105, 0.5); + /* after GTK 4.16 is a requirement, switch to the following: + /* background-color: color-mix(in srgb, var(--success-bg-color), transparent 50%); */ +} + +banner.child_exited_abnormally revealer widget { + background-color: rgba(192, 28, 40, 0.5); + /* after GTK 4.16 is a requirement, switch to the following: + /* background-color: color-mix(in srgb, var(--error-bg-color), transparent 50%); */ +}