Fix #2501166 - network monitor doesn't save network interface.
authorHong Jen Yee (PCMan) <pcman.tw@gmail.com>
Sun, 10 May 2009 12:25:20 +0000 (12:25 +0000)
committerHong Jen Yee (PCMan) <pcman.tw@gmail.com>
Sun, 10 May 2009 12:25:20 +0000 (12:25 +0000)
src/plugins/netstatus/netstatus-dialog.c
src/plugins/netstatus/netstatus-dialog.h
src/plugins/netstatus/netstatus.c

index c90a5a3..32c6cb3 100644 (file)
@@ -814,3 +814,11 @@ const char* netstatus_dialog_get_configuration_tool( GtkWidget* dialog )
     data = g_object_get_data (G_OBJECT (dialog), "netstatus-dialog-data");
     return data->config_tool;
 }
+
+/* 2009.05.10 Add by Hong Jen Yee (PCMan) to be used in lxpanel plugin */
+const char* netstatus_dialog_get_iface_name( GtkWidget* dialog )
+{
+    NetstatusDialogData *data;
+    data = g_object_get_data (G_OBJECT (dialog), "netstatus-dialog-data");
+    return netstatus_iface_get_name (data->iface);
+}
index 58d6289..827e6e1 100644 (file)
@@ -35,6 +35,9 @@ GtkWidget *netstatus_dialog_new (NetstatusIface *iface);
 void netstatus_dialog_set_configuration_tool( GtkWidget* dialog, const char* tool );
 const char* netstatus_dialog_get_configuration_tool( GtkWidget* dialog );
 
+/* 2009.05.10 Add by Hong Jen Yee (PCMan) to be used in lxpanel plugin */
+const char* netstatus_dialog_get_iface_name( GtkWidget* dialog );
+
 G_END_DECLS
 
 #endif /* __NETSTATUS_DIALOG_H__ */
index 9119277..5c39d8e 100644 (file)
@@ -56,13 +56,20 @@ netstatus_destructor(Plugin *p)
 
 static void on_response( GtkDialog* dlg, gint response, netstatus *ns )
 {
+    const char* iface;
     switch( response )
     {
         case GTK_RESPONSE_CLOSE:
         case GTK_RESPONSE_DELETE_EVENT:
         case GTK_RESPONSE_NONE:
+        iface = netstatus_dialog_get_iface_name((GtkWidget*)dlg);
+        if( iface )
+        {
+            g_free(ns->iface);
+            ns->iface = g_strdup(iface);
             gtk_widget_destroy( GTK_WIDGET(dlg) );
             ns->dlg = NULL;
+        }
     }
 }
 
@@ -77,6 +84,7 @@ static void on_button_press( GtkWidget* widget, GdkEventButton* evt, Plugin* p )
         {
             iface = netstatus_icon_get_iface( NETSTATUS_ICON(widget) );
             ns->dlg = netstatus_dialog_new(iface);
+            g_object_unref(iface);
 
             /* fix background */
             gtk_widget_set_style(ns->dlg, p->panel->defstyle);