Hide inside the notification area

This commit is contained in:
Mike Massonnet
2010-05-23 20:57:25 +02:00
parent 5eaf309cfd
commit 0a8e9b2ae5
2 changed files with 19 additions and 0 deletions

View File

@@ -21,9 +21,19 @@
static XtmSettings *settings; static XtmSettings *settings;
static GtkWidget *window; static GtkWidget *window;
static GtkStatusIcon *status_icon;
static XtmTaskManager *task_manager; static XtmTaskManager *task_manager;
static gboolean timeout = 0; 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 static gboolean
init_timeout (void) init_timeout (void)
{ {
@@ -79,6 +89,9 @@ int main (int argc, char *argv[])
settings = xtm_settings_get_default (); 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 (); window = xtm_process_window_new ();
gtk_widget_show (window); gtk_widget_show (window);

View File

@@ -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 (widget));
g_return_if_fail (GTK_IS_WIDGET (XTM_PROCESS_WINDOW (widget)->priv->window)); g_return_if_fail (GTK_IS_WIDGET (XTM_PROCESS_WINDOW (widget)->priv->window));
gtk_widget_show (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 static void
xtm_process_window_hide (GtkWidget *widget) xtm_process_window_hide (GtkWidget *widget)
{ {
gint winx, winy;
g_return_if_fail (GTK_IS_WIDGET (widget)); g_return_if_fail (GTK_IS_WIDGET (widget));
g_return_if_fail (GTK_IS_WIDGET (XTM_PROCESS_WINDOW (widget)->priv->window)); 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_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 * GtkTreeModel *