Fix problem with windows iconifying in KDE Switching back to the gtk_widget_hide() from 0.8.3, and adding code for proper exit from gapcmon when Close button pressed without icons in system tray. --- ./src/gapcmon.c +++ ./src/gapcmon.c @@ -155,6 +155,7 @@ static gboolean gapc_util_treeview_get_iter_from_monitor(GtkTreeModel * model, GtkTreeIter * iter, gint i_value); static gint gapc_util_update_hashtable(PGAPC_MONITOR pm, gchar * pch_unparsed); static void cb_panel_systray_icon_destroy(GtkObject * object, gpointer gp); +static void cb_main_interface_button_close(GtkWidget * button, PGAPC_CONFIG pcfg); static void cb_main_interface_button_quit(GtkWidget * button, PGAPC_CONFIG pcfg); static void gapc_monitor_interface_destroy(PGAPC_CONFIG pcfg, gint i_monitor); static GtkWidget *gapc_monitor_interface_create(PGAPC_CONFIG pcfg, gint i_monitor, @@ -3211,7 +3212,7 @@ static gboolean cb_panel_systray_icon_handle_clicked(GtkWidget * widget, switch (event->button) { case 1: if (b_visible) { - gtk_window_iconify(GTK_WINDOW(window)); + gtk_widget_hide(GTK_WIDGET(window)); } else { gtk_window_present_with_time(GTK_WINDOW(window), event->time); } @@ -4096,7 +4097,7 @@ static void cb_panel_monitor_list_activated(GtkTreeView * treeview, if ((pm != NULL) && (pm->window != NULL)) { if (pm->b_visible) { - gtk_window_iconify(GTK_WINDOW(pm->window)); + gtk_widget_hide(GTK_WIDGET(pm->window)); } else { gtk_window_present(GTK_WINDOW(pm->window)); } @@ -4409,7 +4410,7 @@ static gboolean cb_monitor_interface_delete_event(GtkWidget * widget, static void cb_monitor_interface_button_close(GtkWidget * button, PGAPC_MONITOR pm) { g_return_if_fail(pm != NULL); - gtk_window_iconify(GTK_WINDOW(pm->window)); + gtk_widget_hide(GTK_WIDGET(pm->window)); return; } @@ -4501,6 +4502,20 @@ static gboolean cb_main_interface_delete_event(GtkWidget * widget, GdkEvent * ev return FALSE; } + +/* + * Handle the close button action from the information window +*/ +static void cb_main_interface_button_close(GtkWidget * button, PGAPC_CONFIG pcfg) +{ + g_return_if_fail(pcfg != NULL); + if (pcfg->b_use_systray) /* Systray icon exist - we can hide window */ + gtk_widget_hide(GTK_WIDGET(pcfg->window)); + else + cb_main_interface_button_quit(button, pcfg); + return; +} + /* * Handle the quit button action from the information window */ @@ -5297,7 +5312,8 @@ static GtkWidget *gapc_main_interface_create(PGAPC_CONFIG pcfg) /* quit Control button */ button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); - g_signal_connect_swapped(button, "clicked", G_CALLBACK(gtk_window_iconify), window); + g_signal_connect(button, "clicked", G_CALLBACK(cb_main_interface_button_close), + pcfg); gtk_box_pack_end(GTK_BOX(box), button, TRUE, TRUE, 0); gtk_widget_show(button);