gnome-session/show-lock.patch
2009-11-02 05:06:56 +00:00

115 lines
4.9 KiB
Diff

diff -up gnome-session-2.28.0/gnome-session/gsm-inhibit-dialog.c.show-lock gnome-session-2.28.0/gnome-session/gsm-inhibit-dialog.c
--- gnome-session-2.28.0/gnome-session/gsm-inhibit-dialog.c.show-lock 2009-08-25 04:03:42.000000000 -0400
+++ gnome-session-2.28.0/gnome-session/gsm-inhibit-dialog.c 2009-10-14 10:50:42.337489281 -0400
@@ -71,13 +71,16 @@ struct GsmInhibitDialogPrivate
gboolean have_xrender;
int xrender_event_base;
int xrender_error_base;
+ gboolean show_lock;
+ GtkWidget *lock_button;
};
enum {
PROP_0,
PROP_ACTION,
PROP_INHIBITOR_STORE,
- PROP_CLIENT_STORE
+ PROP_CLIENT_STORE,
+ PROP_SHOW_LOCK
};
enum {
@@ -134,6 +137,15 @@ gsm_inhibit_dialog_set_action (GsmInhibi
dialog->priv->action = action;
}
+static void
+gsm_inhibit_dialog_set_show_lock (GsmInhibitDialog *dialog,
+ gboolean show_lock)
+{
+ dialog->priv->show_lock = show_lock;
+ gtk_widget_set_no_show_all (dialog->priv->lock_button, TRUE);
+ gtk_widget_set_visible (dialog->priv->lock_button, show_lock);
+}
+
static gboolean
find_inhibitor (GsmInhibitDialog *dialog,
const char *id,
@@ -809,6 +821,9 @@ gsm_inhibit_dialog_set_property (GObject
case PROP_CLIENT_STORE:
gsm_inhibit_dialog_set_client_store (dialog, g_value_get_object (value));
break;
+ case PROP_SHOW_LOCK:
+ gsm_inhibit_dialog_set_show_lock (dialog, g_value_get_boolean (value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -833,6 +848,9 @@ gsm_inhibit_dialog_get_property (GObject
case PROP_CLIENT_STORE:
g_value_set_object (value, dialog->priv->clients);
break;
+ case PROP_SHOW_LOCK:
+ g_value_set_boolean (value, dialog->priv->show_lock);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -920,9 +938,10 @@ setup_dialog (GsmInhibitDialog *dialog)
break;
}
- gtk_dialog_add_button (GTK_DIALOG (dialog),
- _("Lock Screen"),
- DIALOG_RESPONSE_LOCK_SCREEN);
+ dialog->priv->lock_button =
+ gtk_dialog_add_button (GTK_DIALOG (dialog),
+ _("Lock Screen"),
+ DIALOG_RESPONSE_LOCK_SCREEN);
gtk_dialog_add_button (GTK_DIALOG (dialog),
_("Cancel"),
GTK_RESPONSE_CANCEL);
@@ -1006,6 +1025,7 @@ gsm_inhibit_dialog_constructor (GType
setup_dialog (dialog);
gtk_widget_show_all (GTK_WIDGET (dialog));
+ gsm_inhibit_dialog_set_show_lock (dialog, TRUE);
return G_OBJECT (dialog);
}
@@ -1082,6 +1102,14 @@ gsm_inhibit_dialog_class_init (GsmInhibi
GSM_TYPE_STORE,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+ g_object_class_install_property (object_class,
+ PROP_SHOW_LOCK,
+ g_param_spec_boolean ("show-lock",
+ NULL,
+ NULL,
+ TRUE,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
g_type_class_add_private (klass, sizeof (GsmInhibitDialogPrivate));
}
@@ -1094,6 +1122,8 @@ gsm_inhibit_dialog_init (GsmInhibitDialo
dialog->priv = GSM_INHIBIT_DIALOG_GET_PRIVATE (dialog);
+ dialog->priv->show_lock = TRUE;
+
dialog->priv->xml = gtk_builder_new ();
gtk_builder_set_translation_domain (dialog->priv->xml, GETTEXT_PACKAGE);
diff -up gnome-session-2.28.0/gnome-session/gsm-manager.c.show-lock gnome-session-2.28.0/gnome-session/gsm-manager.c
--- gnome-session-2.28.0/gnome-session/gsm-manager.c.show-lock 2009-10-14 10:50:42.313467505 -0400
+++ gnome-session-2.28.0/gnome-session/gsm-manager.c 2009-10-14 10:51:32.889465604 -0400
@@ -1200,6 +1200,7 @@ query_end_session_complete (GsmManager *
G_CALLBACK (inhibit_dialog_response),
manager);
if (! gsm_manager_has_responsive_inhibitor (manager)) {
+ g_object_set (manager->priv->inhibit_dialog, "show-lock", FALSE, NULL);
manager->priv->inhibit_timeout_id =
g_timeout_add_seconds (120, on_inhibit_dialog_timeout, manager);
}