From 19aa461b019afeb67a7ecfbc7264e227f716e166 Mon Sep 17 00:00:00 2001 From: Philipp Jungkamp Date: Fri, 8 Aug 2025 12:49:37 +0200 Subject: [PATCH 1/2] gio: Add exit_code methods to ApplicationCommandLine --- gio/Gir.toml | 11 +++++++++ gio/src/application_command_line.rs | 36 +++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 gio/src/application_command_line.rs diff --git a/gio/Gir.toml b/gio/Gir.toml index 616b028ea77f..504e94347e48 100644 --- a/gio/Gir.toml +++ b/gio/Gir.toml @@ -346,6 +346,7 @@ generate_builder = true [[object]] name = "Gio.ApplicationCommandLine" status = "generate" +manual_traits = ["ApplicationCommandLineExtManual"] [[object.function]] name = "create_file_for_arg" [[object.function.parameter]] @@ -364,6 +365,16 @@ status = "generate" [[object.function.parameter]] name = "name" string_type = "os_string" + [[object.function]] + name = "set_exit_status" + # Uses glib::ExitCode for consitency with gio::Application interfaces + manual = true + doc_trait_name = "ApplicationCommandLineExtManual" + [[object.function]] + name = "get_exit_status" + # Uses glib::ExitCode for consitency with gio::Application interfaces + manual = true + doc_trait_name = "ApplicationCommandLineExtManual" [[object]] name = "Gio.ApplicationFlags" diff --git a/gio/src/application_command_line.rs b/gio/src/application_command_line.rs new file mode 100644 index 000000000000..a99a4270c5fb --- /dev/null +++ b/gio/src/application_command_line.rs @@ -0,0 +1,36 @@ +// Take a look at the license at the top of the repository in the LICENSE file. + +use std::{boxed::Box as Box_, mem::transmute, ops::ControlFlow}; + +use glib::{ + prelude::*, + signal::{connect_raw, SignalHandlerId}, + translate::*, + ExitCode, GString, +}; + +use crate::{ffi, Application, ApplicationCommandLine, ExitCode, File}; + +pub trait ApplicationCommandLineExtManual: IsA { + #[doc(alias = "g_application_command_line_get_exit_status")] + #[doc(alias = "get_exit_status")] + fn exit_code(&self) -> ExitCode { + let status = unsafe { + ffi::g_application_command_line_get_exit_status(self.as_ref().to_glib_none().0) + }; + + ExitCode::try_from(status).unwrap() + } + + #[doc(alias = "g_application_command_line_set_exit_status")] + #[doc(alias = "set_exit_status")] + fn set_exit_code(&self, exit_code: ExitCode) { + let status = i32::from(exit_code.get()); + + unsafe { + ffi::g_application_command_line_set_exit_status(self.as_ref().to_glib_none().0, status); + } + } +} + +impl> ApplicationExtManual for O {} From 31b5ebd685a0ec6fd09c6c3da146a9c5b31cc12c Mon Sep 17 00:00:00 2001 From: Philipp Jungkamp Date: Fri, 8 Aug 2025 12:50:22 +0200 Subject: [PATCH 2/2] gio: Remove {set,get}_exit_status from Gir generation --- gio/src/auto/application_command_line.rs | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/gio/src/auto/application_command_line.rs b/gio/src/auto/application_command_line.rs index b1179cae8287..fbacd238cdf3 100644 --- a/gio/src/auto/application_command_line.rs +++ b/gio/src/auto/application_command_line.rs @@ -79,12 +79,6 @@ pub trait ApplicationCommandLineExt: IsA + 'static { } } - #[doc(alias = "g_application_command_line_get_exit_status")] - #[doc(alias = "get_exit_status")] - fn exit_status(&self) -> i32 { - unsafe { ffi::g_application_command_line_get_exit_status(self.as_ref().to_glib_none().0) } - } - #[doc(alias = "g_application_command_line_get_is_remote")] #[doc(alias = "get_is_remote")] #[doc(alias = "is-remote")] @@ -170,16 +164,6 @@ pub trait ApplicationCommandLineExt: IsA + 'static { } } - #[doc(alias = "g_application_command_line_set_exit_status")] - fn set_exit_status(&self, exit_status: i32) { - unsafe { - ffi::g_application_command_line_set_exit_status( - self.as_ref().to_glib_none().0, - exit_status, - ); - } - } - #[doc(alias = "is-remote")] fn connect_is_remote_notify(&self, f: F) -> SignalHandlerId { unsafe extern "C" fn notify_is_remote_trampoline<