lightdm-gtk-greeter-team team mailing list archive
-
lightdm-gtk-greeter-team team
-
Mailing list archive
-
Message #00672
[Merge] lp:~kalgasnik/lightdm-gtk-greeter/allow-debugging-option into lp:lightdm-gtk-greeter
Andrew P. has proposed merging lp:~kalgasnik/lightdm-gtk-greeter/allow-debugging-option into lp:lightdm-gtk-greeter.
Requested reviews:
LightDM Gtk+ Greeter Development Team (lightdm-gtk-greeter-team)
For more details, see:
https://code.launchpad.net/~kalgasnik/lightdm-gtk-greeter/allow-debugging-option/+merge/243139
New option: allow-debugging = false|true
false: disable GtkWindow's "enable-debugging" bindings => prevents starting GtkInspector via Ctrl-Shift-I/D hotkeys.
true: change log level of debug messages from "DEBUG" to "MESSAGE" => more informative and useful greeter log.
"false" by default.
--
Your team LightDM Gtk+ Greeter Development Team is requested to review the proposed merge of lp:~kalgasnik/lightdm-gtk-greeter/allow-debugging-option into lp:lightdm-gtk-greeter.
=== modified file 'src/lightdm-gtk-greeter.c'
--- src/lightdm-gtk-greeter.c 2014-09-01 07:58:56 +0000
+++ src/lightdm-gtk-greeter.c 2014-11-28 11:28:08 +0000
@@ -2444,6 +2444,22 @@
return GDK_FILTER_CONTINUE;
}
+static void
+debug_log_handler (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data)
+{
+ gchar *new_domain = NULL;
+ if (log_level == G_LOG_LEVEL_DEBUG)
+ {
+ log_level = G_LOG_LEVEL_MESSAGE;
+ if (log_domain)
+ log_domain = new_domain = g_strdup_printf ("DEBUG/%s", log_domain);
+ else
+ log_domain = "DEBUG";
+ }
+ g_log_default_handler (log_domain, log_level, message, user_data);
+ g_free (new_domain);
+}
+
int
main (int argc, char **argv)
{
@@ -2478,19 +2494,56 @@
g_unix_signal_add (SIGTERM, (GSourceFunc)gtk_main_quit, NULL);
+ config = g_key_file_new ();
+ g_key_file_load_from_file (config, CONFIG_FILE, G_KEY_FILE_NONE, &error);
+ if (error && !g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT))
+ g_warning ("Failed to load configuration from %s: %s\n", CONFIG_FILE, error->message);
+ g_clear_error (&error);
+
+ if (g_key_file_get_boolean (config, "greeter", "allow-debugging", NULL))
+ g_log_set_default_handler (debug_log_handler, NULL);
+
/* init gtk */
gtk_init (&argc, &argv);
+ /* Disabling GtkInspector shortcuts.
+ It is still possible to run GtkInspector with GTK_DEBUG=interactive.
+ Assume that user knows what he's doing. */
+ if (!g_key_file_get_boolean (config, "greeter", "allow-debugging", NULL))
+ {
+ GtkWidget *fake_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ GtkBindingSet *set = gtk_binding_set_by_class (G_OBJECT_GET_CLASS (fake_window));
+ GtkBindingEntry *entry = NULL;
+ GtkBindingSignal *signals = NULL;
+ GSList *bindings = NULL;
+ GSList *iter;
+
+ for (entry = set->entries; entry; entry = entry->set_next)
+ {
+ for (signals = entry->signals; signals; signals = signals->next)
+ {
+ if (g_strcmp0 (signals->signal_name, "enable-debugging") == 0)
+ {
+ bindings = g_slist_prepend (bindings, entry);
+ break;
+ }
+ }
+ }
+
+ for (iter = bindings; iter; iter = g_slist_next (iter))
+ {
+ entry = iter->data;
+ gtk_binding_entry_remove (set, entry->keyval, entry->modifiers);
+ }
+
+ g_slist_free (bindings);
+ gtk_widget_destroy (fake_window);
+ }
+
#ifdef HAVE_LIBIDO
ido_init ();
#endif
- config = g_key_file_new ();
- g_key_file_load_from_file (config, CONFIG_FILE, G_KEY_FILE_NONE, &error);
- if (error && !g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT))
- g_warning ("Failed to load configuration from %s: %s\n", CONFIG_FILE, error->message);
- g_clear_error (&error);
-
state_dir = g_build_filename (g_get_user_cache_dir (), "lightdm-gtk-greeter", NULL);
g_mkdir_with_parents (state_dir, 0775);
state_filename = g_build_filename (state_dir, "state", NULL);
Follow ups