+ /*
+ * GTK 2 implements gtk_entry_set_text by means of two separate
+ * operations: first delete the previous text leaving the empty
+ * string, then insert the new text. This causes two calls to
+ * the "changed" signal.
+ *
+ * The first call to "changed", if allowed to proceed normally,
+ * will cause an EVENT_VALCHANGE event on the edit box, causing
+ * a call to dlg_editbox_get() which will read the empty string
+ * out of the GtkEntry - and promptly write it straight into
+ * the Config structure, which is precisely where our `text'
+ * pointer is probably pointing, so the second editing
+ * operation will insert that instead of the string we
+ * originally asked for.
+ *
+ * Hence, we must block our "changed" signal handler for the
+ * duration of this call to gtk_entry_set_text.
+ */
+ g_signal_handler_block(uc->entry, uc->entrysig);