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