diff --git a/ChangeLog b/ChangeLog
index f0099f7621983a4e8357b0d32525b47746d3056a..81d067a2785edb80b81c2d2392c635e5b046b361 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,7 @@
 
+2009-04-02 10:24 Ali aliov@xfce.org 
+	 * : Fix Some bugs reported by Yves Alexis
+
 2009-04-02  8:40 Ali aliov@xfce.org 
 	 * : Patch of the man page from Robby Workman
 
diff --git a/settings/xfpm-settings.c b/settings/xfpm-settings.c
index 3ea01be7905666837925905860271189e8635ba3..f375321499d5a28a112b1d4623a78b2f19928241 100644
--- a/settings/xfpm-settings.c
+++ b/settings/xfpm-settings.c
@@ -412,7 +412,7 @@ critical_level_value_changed_cb (GtkSpinButton *w, XfconfChannel *channel)
 {
     guint val = (guint) gtk_spin_button_get_value (w);
     
-    if (!xfconf_channel_get_uint (channel, CRITICAL_POWER_LEVEL, val) )
+    if (!xfconf_channel_set_uint (channel, CRITICAL_POWER_LEVEL, val) )
     {
 	g_critical ("Unable to set value %d for property %s\n", val, CRITICAL_POWER_LEVEL);
     }
diff --git a/src/org.freedesktop.PowerManagement.Inhibit.xml b/src/org.freedesktop.PowerManagement.Inhibit.xml
index 48b76a9fd11d5666d3e4ff8d137562a4b757f28a..ec2d0e6fedf6016c34fb2f85fa1c13d614a03bf4 100644
--- a/src/org.freedesktop.PowerManagement.Inhibit.xml
+++ b/src/org.freedesktop.PowerManagement.Inhibit.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <node name="/">
     <interface name="org.freedesktop.PowerManagement.Inhibit">
+    
     <method name="Inhibit">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
       <arg type="s" name="application" direction="in"/>
@@ -20,6 +21,11 @@
       <arg type="b" name="has_inhibit_changed" direction="out"/>
     </signal>
     
+    <!--*** NOT STANDARD ***-->
+    <method name="GetInhibitors">
+     <arg type="as" name="inhibitors" direction="out"/>
+    </method>
+    
     </interface>
     
 </node>
diff --git a/src/xfpm-battery.c b/src/xfpm-battery.c
index 475a339cbe56fa69ee67d1df4bde09871c0efad4..49778bd1dbcb9e27005cc6a027816cda868f047f 100644
--- a/src/xfpm-battery.c
+++ b/src/xfpm-battery.c
@@ -283,6 +283,9 @@ xfpm_battery_get_battery_state (XfpmBatteryState *state,
 	    return _("is almost empty");
     	}
     }
+    
+    g_warn_if_reached ();
+    
     return "";
 }
 
diff --git a/src/xfpm-inhibit.c b/src/xfpm-inhibit.c
index 488c6da6bc2d4b92ef3b2576ff76bb876f64cb34..439e394a0338b7735233e205ec74505882e8dcc1 100644
--- a/src/xfpm-inhibit.c
+++ b/src/xfpm-inhibit.c
@@ -294,6 +294,10 @@ static gboolean xfpm_inhibit_has_inhibit(XfpmInhibit *inhibit,
 					 gboolean    *OUT_has_inhibit,
 					 GError     **error);
 
+static gboolean xfpm_inhibit_get_inhibitors (XfpmInhibit *inhibit,
+					     gchar ***OUT_inhibitor,
+					     GError **error);
+
 #include "org.freedesktop.PowerManagement.Inhibit.h"
 
 static void xfpm_inhibit_dbus_class_init  (XfpmInhibitClass *klass)
@@ -371,3 +375,25 @@ static gboolean xfpm_inhibit_has_inhibit   (XfpmInhibit *inhibit,
 
     return TRUE;
 }
+
+static gboolean xfpm_inhibit_get_inhibitors (XfpmInhibit *inhibit,
+					     gchar ***OUT_inhibitors,
+					     GError **error)
+{
+    gint i;
+    Inhibitor *inhibitor;
+
+    TRACE ("Get Inhibitors message received");
+    
+    *OUT_inhibitors = g_new (gchar *, inhibit->priv->array->len + 1);
+    
+    for ( i = 0; i<inhibit->priv->array->len; i++)
+    {
+	inhibitor = g_ptr_array_index (inhibit->priv->array, i);
+	(*OUT_inhibitors)[i] = g_strdup (inhibitor->app_name);
+    }
+    
+    (*OUT_inhibitors)[inhibit->priv->array->len] = NULL;
+    
+    return TRUE;
+}
diff --git a/src/xfpm-xfconf.c b/src/xfpm-xfconf.c
index d3970697c2706f3eb98179a324afc562de8960f4..ad478edf752d696bf44c724ce9e8a3d13cf54830 100644
--- a/src/xfpm-xfconf.c
+++ b/src/xfpm-xfconf.c
@@ -231,7 +231,7 @@ xfpm_xfconf_property_changed_cb (XfconfChannel *channel, gchar *property,
     {
 	str = g_value_get_string (value);
 	val = xfpm_shutdown_string_to_int (str);
-	if ( G_UNLIKELY (val == -1 || val == 3 || val == 1 ))
+	if ( G_UNLIKELY (val == -1 || val == 1 ))
 	{
 	    g_warning ("Invalid value %s for property %s, using default\n", str, CRITICAL_BATT_ACTION_CFG);
 	    conf->priv->critical_action = XFPM_DO_NOTHING;