=> ca442991158d525f3a8e2f5c31492921059f4797
[1mdiff --git a/src/ui/documentwidget.c b/src/ui/documentwidget.c[m [1mindex 81aa382f..1b5b9af2 100644[m [1m--- a/src/ui/documentwidget.c[m [1m+++ b/src/ui/documentwidget.c[m [36m@@ -1243,9 +1243,9 @@[m [mstatic void drawRun_DrawContext_(void *context, const iGmRun *run) {[m const iGmDocument *doc = d->view->doc;[m const int linkFlags = linkFlags_GmDocument(doc, run->linkId);[m /* Hover state of a link. */[m [31m- iBool isHover =[m [31m- (run->linkId && d->view->hoverLink && run->linkId == d->view->hoverLink->linkId &&[m [31m- ~run->flags & decoration_GmRunFlag);[m [32m+[m[32m const iBool isPartOfHover = (run->linkId && d->view->hoverLink &&[m [32m+[m[32m run->linkId == d->view->hoverLink->linkId);[m [32m+[m[32m iBool isHover = (isPartOfHover && ~run->flags & decoration_GmRunFlag);[m /* Visible (scrolled) position of the run. */[m const iInt2 visPos = addX_I2(add_I2(run->visBounds.pos, origin),[m /* Preformatted runs can be scrolled. */[m [36m@@ -1260,18 +1260,23 @@[m [mstatic void drawRun_DrawContext_(void *context, const iGmRun *run) {[m isInlineImageCaption = iFalse;[m }[m #endif[m [32m+[m[32m iBool isMobileHover = deviceType_App() != desktop_AppDeviceType &&[m [32m+[m[32m (isPartOfHover || contains_PtrSet(d->view->invalidRuns, run));[m /* While this is consistent, it's a bit excessive to indicate that an inlined image[m is open: the image itself is the indication. */[m const iBool isInlineImageCaption = iFalse;[m [31m- if (run->linkId && (linkFlags & isOpen_GmLinkFlag || isInlineImageCaption)) {[m [32m+[m[32m if (run->linkId && (linkFlags & isOpen_GmLinkFlag || isInlineImageCaption || isMobileHover)) {[m /* Open links get a highlighted background. */[m int bg = tmBackgroundOpenLink_ColorId;[m [32m+[m[32m if (isMobileHover && !isPartOfHover) {[m [32m+[m[32m bg = tmBackground_ColorId; /* hover ended and was invalidated */[m [32m+[m[32m }[m const int frame = tmFrameOpenLink_ColorId;[m const int pad = gap_Text;[m iRect wideRect = { init_I2(origin.x - pad, visPos.y),[m init_I2(d->docBounds.size.x + 2 * pad,[m height_Rect(run->visBounds)) };[m [31m- adjustEdges_Rect(&wideRect,[m [32m+[m[32m adjustEdges_Rect(&wideRect,[m[41m [m run->flags & startOfLine_GmRunFlag ? -pad * 3 / 4 : 0, 0,[m run->flags & endOfLine_GmRunFlag ? pad * 3 / 4 : 0, 0);[m /* The first line is composed of two runs that may be drawn in either order, so[m
text/gemini; charset=utf-8
This content has been proxied by September (ba2dc).