Skip to content

Commit

Permalink
Fixed: Percent-encode spaces when copying
Browse files Browse the repository at this point in the history
IssueID #112
  • Loading branch information
skyjake committed Jan 12, 2021
1 parent 41cc66c commit 5314388
Show file tree
Hide file tree
Showing 6 changed files with 17 additions and 7 deletions.
1 change: 1 addition & 0 deletions res/about/version.gmi
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
## 1.0.3
* Improved font glyph caching: only rasterize glyphs when drawing text, and retry after failure. This makes initial document layout faster and avoids issues with permanently lost glyphs.
* Fixed parts of text disappearing when the glyph cache fills up. The cache also uses less memory now.
* Fixed percent-encoding of spaces when copying URLs to clipboard.
* Fixed feed entry context menu showing the wrong menu item for Mark as Read/Unread.
* Fixed parentheses and brackets being trimmed from feed entry titles.
* Fixed quotes appearing continuous even when there are empty lines in between.
Expand Down
6 changes: 6 additions & 0 deletions src/gmutil.c
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,12 @@ void urlEncodeSpaces_String(iString *d) {
}
}

const iString *withSpacesEncoded_String(const iString *d) {
iString *enc = copy_String(d);
urlEncodeSpaces_String(enc);
return collect_String(enc);
}

const iString *feedEntryOpenCommand_String(const iString *url, int newTab) {
if (!isEmpty_String(url)) {
iString *cmd = collectNew_String();
Expand Down
1 change: 1 addition & 0 deletions src/gmutil.h
Original file line number Diff line number Diff line change
Expand Up @@ -110,5 +110,6 @@ void urlEncodePath_String (iString *);
iString * makeFileUrl_String (const iString *localFilePath);
const char * makeFileUrl_CStr (const char *localFilePath);
void urlEncodeSpaces_String (iString *);
const iString * withSpacesEncoded_String(const iString *);

const iString * feedEntryOpenCommand_String (const iString *url, int newTab); /* checks fragment */
6 changes: 3 additions & 3 deletions src/ui/documentwidget.c
Original file line number Diff line number Diff line change
Expand Up @@ -1613,11 +1613,11 @@ static iBool handleCommand_DocumentWidget_(iDocumentWidget *d, const char *cmd)
}
else if (equal_Command(cmd, "document.copylink") && document_App() == d) {
if (d->contextLink) {
SDL_SetClipboardText(cstr_String(
absoluteUrl_String(d->mod.url, linkUrl_GmDocument(d->doc, d->contextLink->linkId))));
SDL_SetClipboardText(cstr_String(withSpacesEncoded_String(absoluteUrl_String(
d->mod.url, linkUrl_GmDocument(d->doc, d->contextLink->linkId)))));
}
else {
SDL_SetClipboardText(cstr_String(d->mod.url));
SDL_SetClipboardText(cstr_String(withSpacesEncoded_String(d->mod.url)));
}
return iTrue;
}
Expand Down
6 changes: 4 additions & 2 deletions src/ui/inputwidget.c
Original file line number Diff line number Diff line change
Expand Up @@ -514,8 +514,10 @@ static size_t coordIndex_InputWidget_(const iInputWidget *d, iInt2 coord) {
static iBool copy_InputWidget_(iInputWidget *d, iBool doCut) {
if (!isEmpty_Range(&d->mark)) {
const iRanges m = mark_InputWidget_(d);
SDL_SetClipboardText(cstrCollect_String(
newUnicodeN_String(constAt_Array(&d->text, m.start), size_Range(&m))));
iString *str = collect_String(newUnicodeN_String(constAt_Array(&d->text, m.start),
size_Range(&m)));
SDL_SetClipboardText(
cstr_String(d->inFlags & isUrl_InputWidgetFlag ? withSpacesEncoded_String(str) : str));
if (doCut) {
pushUndo_InputWidget_(d);
deleteMarked_InputWidget_(d);
Expand Down
4 changes: 2 additions & 2 deletions src/ui/sidebarwidget.c
Original file line number Diff line number Diff line change
Expand Up @@ -734,7 +734,7 @@ static iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev)
else if (isCommand_Widget(w, ev, "bookmark.copy")) {
const iSidebarItem *item = d->contextItem;
if (d->mode == bookmarks_SidebarMode && item) {
SDL_SetClipboardText(cstr_String(&item->url));
SDL_SetClipboardText(cstr_String(withSpacesEncoded_String(&item->url)));
}
return iTrue;
}
Expand Down Expand Up @@ -955,7 +955,7 @@ static iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev)
else if (isCommand_Widget(w, ev, "history.copy")) {
const iSidebarItem *item = d->contextItem;
if (item && !isEmpty_String(&item->url)) {
SDL_SetClipboardText(cstr_String(&item->url));
SDL_SetClipboardText(cstr_String(withSpacesEncoded_String(&item->url)));
}
return iTrue;
}
Expand Down

0 comments on commit 5314388

Please sign in to comment.