r18883 - gnucash/trunk/src/gnome-utils - Bug #525821 new or edited account names should be checked for reserved chars like ":"
Geert Janssens
gjanssens at code.gnucash.org
Tue Mar 9 17:50:08 EST 2010
Author: gjanssens
Date: 2010-03-09 17:50:08 -0500 (Tue, 09 Mar 2010)
New Revision: 18883
Trac: http://svn.gnucash.org/trac/changeset/18883
Modified:
gnucash/trunk/src/gnome-utils/dialog-account.c
Log:
Bug #525821 new or edited account names should be checked for reserved chars like ":"
Modified: gnucash/trunk/src/gnome-utils/dialog-account.c
===================================================================
--- gnucash/trunk/src/gnome-utils/dialog-account.c 2010-03-09 21:53:43 UTC (rev 18882)
+++ gnucash/trunk/src/gnome-utils/dialog-account.c 2010-03-09 22:50:08 UTC (rev 18883)
@@ -1162,6 +1162,36 @@
}
static void
+gnc_account_name_insert_text_cb (GtkWidget *entry,
+ const gchar *text,
+ gint length,
+ gint *position,
+ gpointer data)
+{
+ GtkEditable *editable = GTK_EDITABLE( entry );
+ const gchar *separator = NULL;
+ gchar **strsplit;
+
+ separator = gnc_get_account_separator_string();
+ strsplit = g_strsplit ( text, separator, 0 );
+ if ( strsplit[1] != NULL )
+ {
+ gchar *result = g_strjoinv ( NULL, strsplit );
+ g_signal_handlers_block_by_func ( G_OBJECT ( editable ),
+ G_CALLBACK ( gnc_account_name_insert_text_cb ),
+ data );
+ gtk_editable_insert_text ( editable, result, g_utf8_strlen ( result, -1 ), position );
+ g_signal_handlers_unblock_by_func ( G_OBJECT ( editable ),
+ G_CALLBACK ( gnc_account_name_insert_text_cb ),
+ data );
+ g_signal_stop_emission_by_name (G_OBJECT ( editable ), "insert_text");
+ g_free (result);
+ }
+
+ g_strfreev ( strsplit );
+}
+
+static void
gnc_account_name_changed_cb(GtkWidget *widget, gpointer data)
{
AccountWindow *aw = data;
@@ -1281,6 +1311,8 @@
aw->notebook = glade_xml_get_widget (xml, "account_notebook");
aw->name_entry = glade_xml_get_widget (xml, "name_entry");
+ g_signal_connect (G_OBJECT (aw->name_entry), "insert-text",
+ G_CALLBACK (gnc_account_name_insert_text_cb), aw);
g_signal_connect (G_OBJECT (aw->name_entry), "changed",
G_CALLBACK (gnc_account_name_changed_cb), aw);
More information about the gnucash-changes
mailing list