692065227f9b0f987144c4608ffd6c31ce2af35d
kate
  Mon Jul 29 17:45:05 2019 -0700
Add support for styling submit buttons to indicate if they have been pressed (in modal mode).  Do this for reverse and multi-region buttons on hgTracks. refs #23922

diff --git src/lib/cheapcgi.c src/lib/cheapcgi.c
index b04d3b5..c0530b5 100644
--- src/lib/cheapcgi.c
+++ src/lib/cheapcgi.c
@@ -1482,59 +1482,64 @@
     "document.%s.%s.value = ''; document.%s.submit();", form, field, form);
 cgiMakeOnClickButton(id, javascript, " Clear  ");
 }
 
 void cgiMakeClearButtonNoSubmit(char *form, char *field)
 /* Make button to clear a text field, without resubmitting the form. */
 {
 char id[256];
 safef(id, sizeof id, "%s_clear", field);
 char javascript[1024];
 safef(javascript, sizeof javascript,
         "document.%s.%s.value = '';", form, field);
 cgiMakeOnClickButton(id, javascript, " Clear ");
 }
 
-static void cgiMakeSubmitButtonWithOptionalMsgAndOnClick(char *name, char *value, char *msg, char *onClick)
-/* Make 'submit' type button, with optional messsage and onclick javascript */
+void cgiMakeSubmitButtonMaybePressed(char *name, char *value, char *msg, 
+                char *onClick, boolean pressed)
+/* Make 'submit' type button, with optional messsage and onclick javascript.
+   Set styling to indicate whether button has been pressed (for buttons that change browser mode).
+ */
 {
 printf("<input type='submit' name='%s' id='%s' value='%s'",
         name, name, value);
+if (pressed)
+    printf(" class='pressed'");
 if (msg)
     printf(" title='%s'", msg);
 printf(">");
 if (onClick)
     jsOnEventById("click", name, onClick);
 }
 
 void cgiMakeButtonWithMsg(char *name, char *value, char *msg)
 /* Make 'submit' type button. Display msg on mouseover, if present*/
 {
-cgiMakeSubmitButtonWithOptionalMsgAndOnClick(name, value, msg, NULL);
+cgiMakeSubmitButtonMaybePressed(name, value, msg, NULL, FALSE);
 }
 
 void cgiMakeOnClickSubmitButton(char *command, char *name, char *value)
 /* Make submit button with both variable name and value with client side
  * onClick (java)script. */
 {
-cgiMakeSubmitButtonWithOptionalMsgAndOnClick(name, value, NULL, command);
+cgiMakeSubmitButtonMaybePressed(name, value, NULL, command, FALSE);
 }
 
 void cgiMakeButtonWithOnClick(char *name, char *value, char *msg, char *onClick)
 /* Make 'submit' type button, with onclick javascript */
 {
-cgiMakeSubmitButtonWithOptionalMsgAndOnClick(name, value, msg, onClick);
+cgiMakeSubmitButtonMaybePressed(name, value, msg, onClick, FALSE);
 }
 
 void cgiMakeButton(char *name, char *value)
 /* Make 'submit' type button */
 {
 cgiMakeButtonWithMsg(name, value, NULL);
 }
 
 void cgiMakeOnClickButton(char *id, char *command, char *value)
 /* Make button with client side onClick javascript. */
 {
 printf("<INPUT TYPE='button' id='%s' VALUE=\"%s\">", id, value);
 jsOnEventById("click", id, command);
 }