From mboxrd@z Thu Jan 1 00:00:00 1970 From: john at keeping.me.uk (John Keeping) Date: Sun, 24 Jun 2018 12:42:33 +0100 Subject: [PATCH v3 6/6] line-range-highlight: copy URL to clipboard on click In-Reply-To: <152980829459.2873.7085053956237952034.stgit@mail.warmcat.com> References: <152980795804.2873.3939128717470466784.stgit@mail.warmcat.com> <152980829459.2873.7085053956237952034.stgit@mail.warmcat.com> Message-ID: <20180624114233.GL6584@john.keeping.me.uk> On Sun, Jun 24, 2018 at 10:44:54AM +0800, Andy Green wrote: > Since the only reason to click on the line number links > is to get the corresponding #URL to share, this patch > makes that process more convenient by copying the > highlit area, be it a single line or a range, to the > clipboard on each click of the line number links. As a user, I'd find this surprising and probably quite annoying. I strongly prefer that software not overwrite the clipboard contents without an explicit request to do so. A quick survey suggests none of GitHub, Gitlab or repo.or.cz (GitWeb) behave in this way. > Signed-off-by: Andy Green > --- > cgit.js | 36 ++++++++++++++++++++++++++++++++---- > 1 file changed, 32 insertions(+), 4 deletions(-) > > diff --git a/cgit.js b/cgit.js > index 2cfad29..e2c3799 100644 > --- a/cgit.js > +++ b/cgit.js > @@ -89,8 +89,29 @@ function cgit_line_range_highlight() > e.scrollIntoView(true); > } > > +function cgit_copy_clipboard(value) > +{ > + var inp = document.createElement("textarea"); > + var e = document.getElementById("linenumber_td"); > + > + inp.type = "text"; > + inp.value = value; > + /* hidden style stops it working for clipboard */ > + inp.setAttribute('readonly', ''); > + inp.style.position = "absolute"; > + inp.style.left = "-1000px"; > + > + e.appendChild(inp); > + > + inp.select(); > + > + document.execCommand("copy"); > + > + inp.remove(); > +} > + > function cgit_line_range_click(e) { > - var t = e.target.id; > + var t = e.target.id, cp; > > cgit_line_range_override = null; > > @@ -101,13 +122,13 @@ function cgit_line_range_click(e) { > * is called, and override it there. > */ > > - if (window.location.hash && window.location.hash.indexOf("-") < 0) > + if (window.location.hash && window.location.hash.indexOf("-") < 0) { > if (parseInt(window.location.hash.substring(2)) < > parseInt(t.substring(1))) /* forwards */ > - cgit_line_range_override = > + cp = cgit_line_range_override = > window.location + '-' + t.substring(1); > else /* backwards */ > - cgit_line_range_override = > + cp = cgit_line_range_override = > window.location.href.substring(0, > window.location.href.length - > window.location.hash.length) + > @@ -115,6 +136,13 @@ function cgit_line_range_click(e) { > window.location.href.substring( > window.location.href.length - > window.location.hash.length + 2); > + } else > + cp = window.location.href.substring(0, > + window.location.href.length - > + window.location.hash.length) + > + '#n' + t.substring(1); > + > + cgit_copy_clipboard(cp); > } > > /* line range highlight */ > > _______________________________________________ > CGit mailing list > CGit at lists.zx2c4.com > https://lists.zx2c4.com/mailman/listinfo/cgit