Sophie

Sophie

distrib > Altlinux > 4.1 > i586 > by-pkgid > 94c753ed22f748f13a1bd2df5feacfe7 > files > 1

gapcmon-0.8.8-alt0.M41.1.src.rpm

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);