Only elide label of hyperlink inset if target and not name given

Pavel Sanda sanda at lyx.org
Tue Mar 24 11:35:56 UTC 2020


On Mon, Mar 23, 2020 at 12:36:58PM +0100, Pavel Sanda wrote:
> On Sun, Mar 22, 2020 at 08:26:47PM -0400, Richard Kimberly Heck wrote:
> > On 3/22/20 5:51 PM, Pavel Sanda wrote:
> > > On Sat, Mar 21, 2020 at 11:14:48PM +0100, ??ystein Senneset Haaland wrote:
> > >> When I add a URL as a hyperlink inset and give it a name, I normally would
> > >> like to see the full text of the name in the label. This way, it can to a
> > >> greater extent be part of the surrounding text.
> > >>
> > >> The patch is simple; it only moves the eliding part up where its only the
> > >> target that is set, not the name:
> > > Makes sense. I can commit later if there are no objections. 
> > 
> > Seems sensible to me, too.
> 
> Actually I am not sure anymore about arbitrary lengths. If someone hyperlinks whole
> paragraph, do we really want inset overlaping width of lyx window?
> Wouldn't be enough to make restriction of 'name' case just somewhat longer?
> (Say 80 chars approximating single line in the output.) 

Like this.
Pavel
-------------- next part --------------
diff --git a/src/insets/InsetHyperlink.cpp b/src/insets/InsetHyperlink.cpp
index a500f7bd59..65f6c0fe24 100644
--- a/src/insets/InsetHyperlink.cpp
+++ b/src/insets/InsetHyperlink.cpp
@@ -65,14 +65,22 @@ docstring InsetHyperlink::screenLabel() const
 	docstring url;
 
 	url += getParam("name");
-	if (url.empty())
+	if (url.empty()) {
 		url += getParam("target");
 
-	// elide if long
-	if (url.length() > 30) {
-		docstring end = url.substr(url.length() - 17, url.length());
-		support::truncateWithEllipsis(url, 13);
-		url += end;
+		// elide if long and no name was provided
+		if (url.length() > 30) {
+			docstring end = url.substr(url.length() - 17, url.length());
+			support::truncateWithEllipsis(url, 13);
+			url += end;
+		}
+	} else {
+		// elide if long (approx number of chars in line of article class)
+		if (url.length() > 80) {
+			docstring end = url.substr(url.length() - 67, url.length());
+			support::truncateWithEllipsis(url, 13);
+			url += end;
+		}
 	}
 	return temp + url;
 }


More information about the lyx-devel mailing list