From 0a8e9b2ae529bafe4c35089e2aa841f5fefa3215 Mon Sep 17 00:00:00 2001 From: Mike Massonnet Date: Sun, 23 May 2010 20:57:25 +0200 Subject: [PATCH] Hide inside the notification area --- src/main.c | 13 +++++++++++++ src/process-window.c | 6 ++++++ 2 files changed, 19 insertions(+) diff --git a/src/main.c b/src/main.c index 9503ec7..f4dfb91 100644 --- a/src/main.c +++ b/src/main.c @@ -21,9 +21,19 @@ static XtmSettings *settings; static GtkWidget *window; +static GtkStatusIcon *status_icon; static XtmTaskManager *task_manager; static gboolean timeout = 0; +static void +status_icon_activated () +{ + if (!(GTK_WIDGET_VISIBLE (window))) + gtk_widget_show (window); + else + gtk_widget_hide (window); +} + static gboolean init_timeout (void) { @@ -79,6 +89,9 @@ int main (int argc, char *argv[]) settings = xtm_settings_get_default (); + status_icon = gtk_status_icon_new_from_icon_name ("utilities-system-monitor"); + g_signal_connect (status_icon, "activate", G_CALLBACK (status_icon_activated), NULL); + window = xtm_process_window_new (); gtk_widget_show (window); diff --git a/src/process-window.c b/src/process-window.c index da40c7e..7e11da8 100644 --- a/src/process-window.c +++ b/src/process-window.c @@ -395,14 +395,20 @@ xtm_process_window_show (GtkWidget *widget) g_return_if_fail (GTK_IS_WIDGET (widget)); g_return_if_fail (GTK_IS_WIDGET (XTM_PROCESS_WINDOW (widget)->priv->window)); gtk_widget_show (XTM_PROCESS_WINDOW (widget)->priv->window); + gtk_window_present (GTK_WINDOW (XTM_PROCESS_WINDOW (widget)->priv->window)); + GTK_WIDGET_SET_FLAGS (widget, GTK_VISIBLE); } static void xtm_process_window_hide (GtkWidget *widget) { + gint winx, winy; g_return_if_fail (GTK_IS_WIDGET (widget)); g_return_if_fail (GTK_IS_WIDGET (XTM_PROCESS_WINDOW (widget)->priv->window)); + gtk_window_get_position (GTK_WINDOW (XTM_PROCESS_WINDOW (widget)->priv->window), &winx, &winy); gtk_widget_hide (XTM_PROCESS_WINDOW (widget)->priv->window); + gtk_window_move (GTK_WINDOW (XTM_PROCESS_WINDOW (widget)->priv->window), winx, winy); + GTK_WIDGET_UNSET_FLAGS (widget, GTK_VISIBLE); } GtkTreeModel *