diff -Nur gtk+-2.8.7.orig/gtk/gtkentry.c gtk+-2.8.7/gtk/gtkentry.c
--- gtk+-2.8.7.orig/gtk/gtkentry.c	2005-09-02 20:51:06.000000000 +0100
+++ gtk+-2.8.7/gtk/gtkentry.c	2005-11-27 02:44:18.000000000 +0000
@@ -596,7 +596,14 @@
 						       1.0,
 						       0.0,
 						       GTK_PARAM_READWRITE));
-  
+
+  gtk_widget_class_install_style_property (widget_class,
+                                           g_param_spec_unichar ("invisible-char",
+                                                                 P_("Invisible character"),
+                                                                 P_("The character to use when masking entry contents (in \"password mode\")"),
+                                                                 '*',
+                                                                 GTK_PARAM_READWRITE));
+
   signals[POPULATE_POPUP] =
     g_signal_new ("populate_popup",
 		  G_OBJECT_CLASS_TYPE (gobject_class),
@@ -1000,6 +1007,7 @@
   entry->editable = TRUE;
   entry->visible = TRUE;
   entry->invisible_char = '*';
+  entry->invisible_char_explicit = FALSE;
   entry->dnd_position = -1;
   entry->width_chars = -1;
   entry->is_cell_renderer = FALSE;
@@ -2163,6 +2171,9 @@
 {
   GtkEntry *entry = GTK_ENTRY (widget);
 
+  if (!entry->invisible_char_explicit)
+    gtk_widget_style_get(widget, "invisible-char", &entry->invisible_char, NULL);
+
   gtk_entry_recompute (entry);
 
   if (previous_style && GTK_WIDGET_REALIZED (widget))
@@ -3995,6 +4006,7 @@
   if (ch == entry->invisible_char)
     return;
 
+  entry->invisible_char_explicit = TRUE;
   entry->invisible_char = ch;
   g_object_notify (G_OBJECT (entry), "invisible-char");
   gtk_entry_recompute (entry);  
diff -Nur gtk+-2.8.7.orig/gtk/gtkentry.h gtk+-2.8.7/gtk/gtkentry.h
--- gtk+-2.8.7.orig/gtk/gtkentry.h	2005-03-20 07:01:21.000000000 +0000
+++ gtk+-2.8.7/gtk/gtkentry.h	2005-11-27 02:36:39.000000000 +0000
@@ -91,6 +91,7 @@
   guint        select_words : 1;
   guint        select_lines : 1;
   guint        resolved_dir : 4; /* PangoDirection */
+  guint        invisible_char_explicit : 1; /* Flag to determine whether an application has set the invisible character */
   guint   button;
   guint   blink_timeout;
   guint   recompute_idle;
