--- src/gpm-manager.c.orig 2010-06-18 11:06:39.599001817 +0200 +++ src/gpm-manager.c 2010-06-18 11:11:39.106991148 +0200 @@ -1852,6 +1852,7 @@ DBusGConnection *connection; GError *error = NULL; guint version; + gboolean lid_closed; manager->priv = GPM_MANAGER_GET_PRIVATE (manager); connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); @@ -1914,6 +1915,10 @@ NULL); manager->priv->button = gpm_button_new (); + g_object_get (manager->priv->client, + "lid-is-closed", &lid_closed, + NULL); + gpm_button_set_lid_closed (manager->priv->button, lid_closed); g_signal_connect (manager->priv->button, "button-pressed", G_CALLBACK (gpm_manager_button_pressed_cb), manager); --- src/gpm-button.c.orig 2010-06-18 11:06:49.999019235 +0200 +++ src/gpm-button.c 2010-06-18 11:13:25.915065450 +0200 @@ -266,6 +266,19 @@ } /** + * gpm_button_set_lid_closed: + **/ +void +gpm_button_set_lid_closed (GpmButton *button, gboolean lid_is_closed) +{ + g_return_val_if_fail (GPM_IS_BUTTON (button), FALSE); + + g_object_set (button->priv->client, + "lid-is-closed", &lid_is_closed, + NULL); +} + +/** * gpm_button_reset_time: * * We have to refresh the event time on resume to handle duplicate buttons --- src/gpm-button.h.orig 2010-06-18 11:13:34.638992269 +0200 +++ src/gpm-button.h 2010-06-18 11:14:12.490990644 +0200 @@ -66,6 +66,7 @@ GType gpm_button_get_type (void); GpmButton *gpm_button_new (void); gboolean gpm_button_is_lid_closed (GpmButton *button); +void gpm_button_set_lid_closed (GpmButton *button, gboolean lid_is_closed); gboolean gpm_button_reset_time (GpmButton *button); G_END_DECLS