[Xfce4-commits] <xfce4-taskmanager:master> Hide window on window close when the status icon is visible
Mike Massonnet
noreply at xfce.org
Thu Jun 10 03:04:01 CEST 2010
Updating branch refs/heads/master
to f66c0e8fd6c050cbb687512aae07bf27679d9509 (commit)
from 6978d8f8486c2022b58f333b42d81ed74d0ae7c9 (commit)
commit f66c0e8fd6c050cbb687512aae07bf27679d9509
Author: Mike Massonnet <mmassonnet at xfce.org>
Date: Thu Jun 10 01:12:49 2010 +0200
Hide window on window close when the status icon is visible
src/main.c | 21 ++++++++++++++++++++-
src/process-window.c | 10 ++++++++++
2 files changed, 30 insertions(+), 1 deletions(-)
diff --git a/src/main.c b/src/main.c
index 2d1fdb2..bb9f5c8 100644
--- a/src/main.c
+++ b/src/main.c
@@ -42,6 +42,24 @@ show_hide_status_icon (void)
gtk_status_icon_set_visible (status_icon, show_status_icon);
}
+static void
+destroy_window (void)
+{
+ gtk_main_quit ();
+}
+
+static gboolean
+delete_window (void)
+{
+ if (!gtk_status_icon_get_visible (status_icon))
+ {
+ gtk_main_quit ();
+ return FALSE;
+ }
+ gtk_widget_hide (window);
+ return TRUE;
+}
+
static gboolean
init_timeout (void)
{
@@ -136,7 +154,8 @@ int main (int argc, char *argv[])
g_signal_connect_after (settings, "notify::full-command-line", G_CALLBACK (force_timeout_update), NULL);
g_signal_connect (settings, "notify::show-status-icon", G_CALLBACK (show_hide_status_icon), NULL);
- g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
+ g_signal_connect (window, "destroy", G_CALLBACK (destroy_window), NULL);
+ g_signal_connect (window, "delete-event", G_CALLBACK (delete_window), NULL);
gtk_main ();
diff --git a/src/process-window.c b/src/process-window.c
index 43986d9..9cf5d09 100644
--- a/src/process-window.c
+++ b/src/process-window.c
@@ -57,6 +57,7 @@ static void xtm_process_window_show (GtkWidget *widget);
static void xtm_process_window_hide (GtkWidget *widget);
static void emit_destroy_signal (XtmProcessWindow *window);
+static gboolean emit_delete_event_signal (XtmProcessWindow *window, GdkEvent *event);
static void show_menu_execute_task (XtmProcessWindow *window);
static void show_menu_preferences (XtmProcessWindow *window);
static void show_about_dialog (XtmProcessWindow *window);
@@ -96,6 +97,7 @@ xtm_process_window_init (XtmProcessWindow *window)
if (width >= 1 && height >= 1)
gtk_window_resize (GTK_WINDOW (window->priv->window), width, height);
g_signal_connect_swapped (window->priv->window, "destroy", G_CALLBACK (emit_destroy_signal), window);
+ g_signal_connect_swapped (window->priv->window, "delete-event", G_CALLBACK (emit_delete_event_signal), window);
window->priv->cpu_monitor = GTK_WIDGET (gtk_builder_get_object (window->priv->builder, "cpu-monitor"));
window->priv->memory_monitor = GTK_WIDGET (gtk_builder_get_object (window->priv->builder, "mem-monitor"));
@@ -171,6 +173,14 @@ emit_destroy_signal (XtmProcessWindow *window)
g_signal_emit_by_name (window, "destroy", G_TYPE_NONE);
}
+static gboolean
+emit_delete_event_signal (XtmProcessWindow *window, GdkEvent *event)
+{
+ gboolean ret;
+ g_signal_emit_by_name (window, "delete-event", event, &ret, G_TYPE_BOOLEAN);
+ return ret;
+}
+
static void
execute_command (const gchar *command)
{
More information about the Xfce4-commits
mailing list