Suppress echo of password in ICS Chat window (GTK)
authorH.G.Muller <hgm@hgm-xboard.(none)>
Thu, 10 Mar 2016 12:03:55 +0000 (13:03 +0100)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Thu, 10 Mar 2016 12:03:55 +0000 (13:03 +0100)
The GTK version uses the set_visibility GTK call to switch echoing
of the ICS input widget. In Xaw this is a dummy. EchoOn/Off had to
be moved to dialogs.c for this.

dialogs.c
dialogs.h
gtk/xoptions.c
usystem.c
xaw/xoptions.c

index 3279a5f..ca9f71c 100644 (file)
--- a/dialogs.c
+++ b/dialogs.c
@@ -2156,6 +2156,25 @@ ConsoleAutoPopUp (char *buf)
        } else PopUpMoveDialog(*buf);
 }
 
+static Boolean noEcho;
+
+void
+EchoOn ()
+{
+    if(!noEcho) return;
+    system("stty echo");
+    WidgetEcho(&chatOptions[CHAT_IN], 1);
+    noEcho = False;
+}
+
+void
+EchoOff ()
+{
+    system("stty -echo");
+    WidgetEcho(&chatOptions[CHAT_IN], 0);
+    noEcho = True;
+}
+
 //--------------------------------- Game-List options dialog ------------------------------------------
 
 char *strings[LPUSERGLT_SIZE];
index a2f5979..15c2725 100644 (file)
--- a/dialogs.h
+++ b/dialogs.h
@@ -200,6 +200,7 @@ void GameListOptionsPopUp P((DialogClass parent));
 void RefreshColor P((int source, int n));
 void SendString P((char *p));
 void DisplayHelp P((char *name));
+void WidgetEcho P((Option *opt, int n));
 
 // in ngamelist.c
 int GameListClicks P((int direction));
index 5c6f91f..8fff39b 100644 (file)
@@ -254,6 +254,12 @@ SetDialogTitle (DialogClass dlg, char *title)
     gtk_window_set_title(GTK_WINDOW(shells[dlg]), title);
 }
 
+void
+WidgetEcho (Option *opt, int n)
+{
+    gtk_entry_set_visibility(opt->handle, n);
+}
+
 void
 SetWidgetFont (GtkWidget *w, char **s)
 {
index a469fe7..77efb60 100644 (file)
--- a/usystem.c
+++ b/usystem.c
@@ -267,22 +267,6 @@ ParseIcsTextColors ()
     SetTextColor(cnames, textColors[ColorNormal].fg - 30, textColors[ColorNormal].bg - 40, -2); // kludge to announce background color to front-end 
 }
 
-static Boolean noEcho;
-
-void
-EchoOn ()
-{
-    system("stty echo");
-    noEcho = False;
-}
-
-void
-EchoOff ()
-{
-    system("stty -echo");
-    noEcho = True;
-}
-
 char *oldICSInteractionTitle;
 
 void
@@ -294,7 +278,7 @@ ShutDownFrontEnd ()
     if (saveSettingsOnExit) SaveSettings(settingsFileName);
     unlink(gameCopyFilename);
     unlink(gamePasteFilename);
-    if(noEcho) EchoOn();
+    EchoOn();
 }
 
 void
index 8d91577..1c517ac 100644 (file)
@@ -180,6 +180,11 @@ SetWidgetState (Option *opt, int state)
     XtSetValues(opt->handle, &arg, 1);
 }
 
+void
+WidgetEcho (Option *opt, int state)
+{
+}
+
 void
 SetWidgetLabel (Option *opt, char *buf)
 {