--- gtkentry.c.bak	2006-07-20 18:41:45.000000000 +0800
+++ gtkentry.c	2006-07-21 11:08:47.000000000 +0800
@@ -2721,7 +2721,7 @@
       pango_layout_get_log_attrs (layout, &log_attrs, &n_attrs);
 
       if (log_attrs[entry->current_pos].backspace_deletes_character)
-	{
+        {
 	  gchar *cluster_text;
 	  gchar *normalized_text;
           glong  len;
@@ -2729,9 +2729,20 @@
 	  cluster_text = gtk_editable_get_chars (editable,
 			  			 prev_pos,
 						 entry->current_pos);
-	  normalized_text = g_utf8_normalize (cluster_text,
-			  		      strlen (cluster_text),
-					      G_NORMALIZE_NFD);
+
+          //for 0x09dc, 0x09dd, 0x09df of Bengali
+          if ((!strcmp (cluster_text, "\340\247\234")) || (!strcmp (cluster_text, "\340\247\235")) || (!strcmp (cluster_text, "\340\247\237")))
+            {
+              normalized_text = g_malloc (sizeof (gchar) * 4);
+              strcpy (normalized_text, cluster_text);
+            }
+          else
+            {
+	      normalized_text = g_utf8_normalize (cluster_text,
+			  		          strlen (cluster_text),
+					          G_NORMALIZE_NFD);
+            }
+	  
           len = g_utf8_strlen (normalized_text, -1);
 
           gtk_editable_delete_text (editable, prev_pos, entry->current_pos);
--- gtktextbuffer.c.bak	2006-07-20 18:42:04.000000000 +0800
+++ gtktextbuffer.c	2006-07-21 10:50:38.000000000 +0800
@@ -3683,9 +3683,21 @@
     {
       if (backspace_deletes_character)
 	{
-	  gchar *normalized_text = g_utf8_normalize (cluster_text,
-						     strlen (cluster_text),
-						     G_NORMALIZE_NFD);
+	  gchar *normalized_text;
+
+          //for 0x09dc, 0x09dd, 0x09df of Bengali
+          if ((!strcmp (cluster_text, "\340\247\234")) || (!strcmp (cluster_text, "\340\247\235")) || (!strcmp (cluster_text, "\340\247\237")))
+            {
+              normalized_text = g_malloc (sizeof (gchar) * 4);
+              strcpy (normalized_text, cluster_text);
+            }
+          else
+            {
+	      normalized_text = g_utf8_normalize (cluster_text,
+			  		          strlen (cluster_text),
+					          G_NORMALIZE_NFD);
+            }
+	  
 	  glong len = g_utf8_strlen (normalized_text, -1);
 	  
 	  if (len > 1)
