# HG changeset patch
# Node ID 309af32a155d
# Parent  5fbe92363b76
diff --git a/pidgin/gtkrequest.c b/pidgin/gtkrequest.c
--- a/pidgin/gtkrequest.c
+++ b/pidgin/gtkrequest.c
@@ -610,19 +610,23 @@ pidgin_request_input(const char *title, 
 
 		data->u.input.entry = input;
 	} else {
-		GtkWidget *entry = gtk_entry_new();
-
-		gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
+		GtkWidget *entry = NULL;
+
+		if(masked) {
+			entry = gtk_password_entry_new();
+			g_object_set(entry, "activates-default", TRUE,
+			             "show-peek-icon", TRUE, NULL);
+		} else {
+			entry = gtk_entry_new();
+			gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
+		}
+
 		gtk_box_append(GTK_BOX(vbox), entry);
 
 		if(default_value != NULL) {
 			gtk_editable_set_text(GTK_EDITABLE(entry), default_value);
 		}
 
-		if(masked) {
-			gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE);
-		}
-
 		data->u.input.entry = entry;
 	}
 
@@ -1091,7 +1095,7 @@ setup_entry_field(GtkWidget *entry, Purp
 {
 	const char *type_hint;
 
-	gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
+	g_object_set(entry, "activates-default", TRUE, NULL);
 
 	g_signal_connect(G_OBJECT(entry), "changed",
 		G_CALLBACK(req_entry_field_changed_cb), field);
@@ -1188,7 +1192,13 @@ create_string_field(PurpleRequestField *
 	{
 		GtkEventController *controller = NULL;
 
-		widget = gtk_entry_new();
+		if (purple_request_field_string_is_masked(field)) {
+			widget = gtk_password_entry_new();
+			gtk_password_entry_set_show_peek_icon(GTK_PASSWORD_ENTRY(widget),
+			                                      TRUE);
+		} else {
+			widget = gtk_entry_new();
+		}
 
 		setup_entry_field(widget, field);
 
@@ -1198,11 +1208,6 @@ create_string_field(PurpleRequestField *
 
 		gtk_widget_set_tooltip_text(widget, purple_request_field_get_tooltip(field));
 
-		if (purple_request_field_string_is_masked(field))
-		{
-			gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE);
-		}
-
 		gtk_editable_set_editable(GTK_EDITABLE(widget), is_editable);
 
 		controller = gtk_event_controller_focus_new();
diff --git a/pidgin/resources/Prefs/network.ui b/pidgin/resources/Prefs/network.ui
--- a/pidgin/resources/Prefs/network.ui
+++ b/pidgin/resources/Prefs/network.ui
@@ -257,11 +257,9 @@ along with this program; if not, see <ht
                   </object>
                 </child>
                 <child>
-                  <object class="GtkEntry" id="turn_password">
+                  <object class="GtkPasswordEntry" id="turn_password">
                     <property name="focusable">1</property>
-                    <property name="visibility">0</property>
-                    <property name="invisible-char">●</property>
-                    <property name="input-purpose">password</property>
+                    <property name="show-peek-icon">1</property>
                   </object>
                 </child>
               </object>
diff --git a/pidgin/resources/Prefs/proxy.ui b/pidgin/resources/Prefs/proxy.ui
--- a/pidgin/resources/Prefs/proxy.ui
+++ b/pidgin/resources/Prefs/proxy.ui
@@ -239,11 +239,9 @@ along with this program; if not, see <ht
                           </object>
                         </child>
                         <child>
-                          <object class="GtkEntry" id="password">
+                          <object class="GtkPasswordEntry" id="password">
                             <property name="focusable">1</property>
-                            <property name="visibility">0</property>
-                            <property name="invisible-char">●</property>
-                            <property name="input-purpose">password</property>
+                            <property name="show-peek-icon">1</property>
                             <signal name="changed" handler="proxy_print_option" object="PidginProxyPrefs" swapped="no"/>
                             <accessibility>
                               <relation name="labelled-by">password-label</relation>
diff --git a/pidgin/resources/proxyoptions.ui b/pidgin/resources/proxyoptions.ui
--- a/pidgin/resources/proxyoptions.ui
+++ b/pidgin/resources/proxyoptions.ui
@@ -180,10 +180,11 @@ along with this library; if not, see <ht
               </object>
             </child>
             <child>
-              <object class="GtkEntry" id="password">
+              <object class="GtkPasswordEntry" id="password">
                 <property name="hexpand">1</property>
                 <property name="halign">fill</property>
                 <property name="focusable">1</property>
+                <property name="show-peek-icon">1</property>
               </object>
             </child>
           </object>
