From: short <> Date: Fri, 14 May 2004 06:51:17 +0000 (+0000) Subject: Fixed "Hide" button gtk_main_quit() issue. X-Git-Tag: udpgate-1_0~67 X-Git-Url: http://git.jankratochvil.net/?p=udpgate.git;a=commitdiff_plain;h=8937b8b0366ad48f7000e17a86626773b414efbb Fixed "Hide" button gtk_main_quit() issue. Implemented Gnome presentation of g_log() errors/warnings/messages. --- diff --git a/src/ui-gnome.c b/src/ui-gnome.c index 7b2691d..3aa4681 100644 --- a/src/ui-gnome.c +++ b/src/ui-gnome.c @@ -35,6 +35,7 @@ #include #include #include +#include #include "network.h" @@ -123,7 +124,27 @@ void on_ButtonHide_clicked(GtkButton *button,gpointer user_data) { g_return_if_fail(GTK_IS_BUTTON(button)); - gtk_main_quit(); + /* Do not: gtk_main_quit(); + * as 'App' widget will quit our gtk_main() automatically. + */ + gtk_widget_destroy(GTK_WIDGET(App)); +} + +static void ui_gnome_g_log_handler(const gchar *log_domain,GLogLevelFlags log_level,const gchar *message,gpointer user_data) +{ +GtkWidget *dialog; + + /**/ if (log_level & G_LOG_LEVEL_ERROR) + dialog=gnome_app_error(App,message); + else if (log_level & (G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING)) + dialog=gnome_app_warning(App,message); + else + dialog=gnome_app_message(App,message); + + gtk_window_set_modal(GTK_WINDOW(dialog),TRUE); + g_signal_connect((gpointer)dialog,"close",G_CALLBACK(gtk_main_quit),NULL); + gtk_main(); + /* 'dialog' gets destroyed automatically */ } /* of "ui-gnome-interface.h": */ @@ -141,6 +162,13 @@ gboolean ui_gnome_init(void) AppBar=GNOME_APPBAR(lookup_widget(GTK_WIDGET(App),"AppBar")); PortEntry=GTK_ENTRY(lookup_widget(GTK_WIDGET(App),"PortEntry")); + /* ui_gnome_g_log_handler() needs 'App'. */ + g_log_set_handler( + G_LOG_DOMAIN, /* log_domain; "Captive" */ + G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL, /* log_levels */ + ui_gnome_g_log_handler, /* log_func */ + NULL); /* user_data */ + gtk_widget_show_all(GTK_WIDGET(App)); g_timeout_add( DAEMON_CHECK_INTERVAL_MS, /* interval */ @@ -152,5 +180,4 @@ gboolean ui_gnome_init(void) void ui_gnome_interactive(void) { gtk_main(); - gtk_widget_destroy(GTK_WIDGET(App)); }