source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mdocml: Only focus on the query input box when no manual page is
@ 2016-04-29 10:46 schwarze
  0 siblings, 0 replies; only message in thread
From: schwarze @ 2016-04-29 10:46 UTC (permalink / raw)
  To: source

Log Message:
-----------
Only focus on the query input box when no manual page is displayed,
that is, for the index page, for the noresult page, and for the
result of an apropos(1) query with more than one page.
As noted by bentley@, when a manual page is displayed, it is more
important that people can quickly use the space bar for paging and 
Ctrl-F for searching.

Modified Files:
--------------
    mdocml:
        cgi.c

Revision Data
-------------
Index: cgi.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/cgi.c,v
retrieving revision 1.130
retrieving revision 1.131
diff -Lcgi.c -Lcgi.c -u -p -r1.130 -r1.131
--- cgi.c
+++ cgi.c
@@ -59,6 +59,11 @@ struct	req {
 	int		  isquery; /* QUERY_STRING used, not PATH_INFO */
 };
 
+enum	focus {
+	FOCUS_NONE = 0,
+	FOCUS_QUERY
+};
+
 static	void		 html_print(const char *);
 static	void		 html_putchar(char);
 static	int		 http_decode(char *);
@@ -79,7 +84,7 @@ static	void		 resp_catman(const struct r
 static	void		 resp_copy(const char *);
 static	void		 resp_end_html(void);
 static	void		 resp_format(const struct req *, const char *);
-static	void		 resp_searchform(const struct req *);
+static	void		 resp_searchform(const struct req *, enum focus);
 static	void		 resp_show(const struct req *, const char *);
 static	void		 set_query_attr(char **, char **);
 static	int		 validate_filename(const char *);
@@ -367,7 +372,7 @@ resp_end_html(void)
 }
 
 static void
-resp_searchform(const struct req *req)
+resp_searchform(const struct req *req, enum focus focus)
 {
 	int		 i;
 
@@ -382,9 +387,12 @@ resp_searchform(const struct req *req)
 
 	printf(	"<table><tr><td>\n"
 		"<input type=\"text\" name=\"query\" value=\"");
-	if (NULL != req->q.query)
+	if (req->q.query != NULL)
 		html_print(req->q.query);
-	puts("\" size=\"40\" autofocus>");
+	printf( "\" size=\"40\"");
+	if (focus == FOCUS_QUERY)
+		printf(" autofocus");
+	puts(">");
 
 	/* Write submission and reset buttons. */
 
@@ -507,7 +515,7 @@ pg_index(const struct req *req)
 {
 
 	resp_begin_html(200, NULL);
-	resp_searchform(req);
+	resp_searchform(req, FOCUS_QUERY);
 	printf("<p>\n"
 	       "This web interface is documented in the\n"
 	       "<a href=\"/%s%smandoc/man8/man.cgi.8\">man.cgi</a>\n"
@@ -524,7 +532,7 @@ static void
 pg_noresult(const struct req *req, const char *msg)
 {
 	resp_begin_html(200, NULL);
-	resp_searchform(req);
+	resp_searchform(req, FOCUS_QUERY);
 	puts("<p>");
 	puts(msg);
 	puts("</p>");
@@ -588,7 +596,8 @@ pg_searchres(const struct req *req, stru
 	}
 
 	resp_begin_html(200, NULL);
-	resp_searchform(req);
+	resp_searchform(req,
+	    req->q.equal || sz == 1 ? FOCUS_NONE : FOCUS_QUERY);
 
 	if (sz > 1) {
 		puts("<div class=\"results\">");
@@ -908,7 +917,7 @@ pg_show(struct req *req, const char *ful
 	}
 
 	resp_begin_html(200, NULL);
-	resp_searchform(req);
+	resp_searchform(req, FOCUS_NONE);
 	resp_show(req, file);
 	resp_end_html();
 }
--
 To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2016-04-29 10:46 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-29 10:46 mdocml: Only focus on the query input box when no manual page is schwarze

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).