diff options
author | Jaakko Keränen <jaakko.keranen@iki.fi> | 2021-12-13 15:20:26 +0200 |
---|---|---|
committer | Jaakko Keränen <jaakko.keranen@iki.fi> | 2021-12-13 15:20:26 +0200 |
commit | 282ddd8d1101befb25a1c057696a2cb1743bc6b5 (patch) | |
tree | c802e02127f5210e7fb5b39082e60b1f88eb85c6 /src/ui/documentwidget.c | |
parent | d548c24208233c1db0a464270d40772359ace28b (diff) |
DocumentWidget: Keeping a cached document
When restoring a page from history, ensure the cached document is stored in the memory cache. Previously this only occurred when a page load finished.
Diffstat (limited to 'src/ui/documentwidget.c')
-rw-r--r-- | src/ui/documentwidget.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/ui/documentwidget.c b/src/ui/documentwidget.c index e68af4d8..bd3fe7ad 100644 --- a/src/ui/documentwidget.c +++ b/src/ui/documentwidget.c | |||
@@ -1881,6 +1881,7 @@ static void addBannerWarnings_DocumentWidget_(iDocumentWidget *d) { | |||
1881 | 1881 | ||
1882 | static void updateFromCachedResponse_DocumentWidget_(iDocumentWidget *d, float normScrollY, | 1882 | static void updateFromCachedResponse_DocumentWidget_(iDocumentWidget *d, float normScrollY, |
1883 | const iGmResponse *resp, iGmDocument *cachedDoc) { | 1883 | const iGmResponse *resp, iGmDocument *cachedDoc) { |
1884 | iAssert(width_Widget(d) > 0); /* must be laid out by now */ | ||
1884 | setLinkNumberMode_DocumentWidget_(d, iFalse); | 1885 | setLinkNumberMode_DocumentWidget_(d, iFalse); |
1885 | clear_ObjectList(d->media); | 1886 | clear_ObjectList(d->media); |
1886 | delete_Gempub(d->sourceGempub); | 1887 | delete_Gempub(d->sourceGempub); |
@@ -1901,9 +1902,13 @@ static void updateFromCachedResponse_DocumentWidget_(iDocumentWidget *d, float n | |||
1901 | d->sourceStatus = success_GmStatusCode; | 1902 | d->sourceStatus = success_GmStatusCode; |
1902 | format_String(&d->sourceHeader, cstr_Lang("pageinfo.header.cached")); | 1903 | format_String(&d->sourceHeader, cstr_Lang("pageinfo.header.cached")); |
1903 | set_Block(&d->sourceContent, &resp->body); | 1904 | set_Block(&d->sourceContent, &resp->body); |
1905 | if (!cachedDoc) { | ||
1906 | setWidth_GmDocument(d->doc, documentWidth_DocumentWidget_(d), width_Widget(d)); | ||
1907 | } | ||
1904 | updateDocument_DocumentWidget_(d, resp, cachedDoc, iTrue); | 1908 | updateDocument_DocumentWidget_(d, resp, cachedDoc, iTrue); |
1905 | // setCachedDocument_History(d->mod.history, d->doc, | 1909 | // if (!cachedDoc) { |
1906 | // (d->flags & openedFromSidebar_DocumentWidgetFlag) != 0); | 1910 | // setCachedDocument_History(d->mod.history, d->doc, iFalse); |
1911 | // } | ||
1907 | clear_Banner(d->banner); | 1912 | clear_Banner(d->banner); |
1908 | updateBanner_DocumentWidget_(d); | 1913 | updateBanner_DocumentWidget_(d); |
1909 | addBannerWarnings_DocumentWidget_(d); | 1914 | addBannerWarnings_DocumentWidget_(d); |
@@ -1932,6 +1937,10 @@ static iBool updateFromHistory_DocumentWidget_(iDocumentWidget *d) { | |||
1932 | recent->flags.openedFromSidebar); | 1937 | recent->flags.openedFromSidebar); |
1933 | updateFromCachedResponse_DocumentWidget_( | 1938 | updateFromCachedResponse_DocumentWidget_( |
1934 | d, recent->normScrollY, recent->cachedResponse, recent->cachedDoc); | 1939 | d, recent->normScrollY, recent->cachedResponse, recent->cachedDoc); |
1940 | if (!recent->cachedDoc) { | ||
1941 | /* We have a cached copy now. */ | ||
1942 | setCachedDocument_History(d->mod.history, d->doc, iFalse); | ||
1943 | } | ||
1935 | return iTrue; | 1944 | return iTrue; |
1936 | } | 1945 | } |
1937 | else if (!isEmpty_String(d->mod.url)) { | 1946 | else if (!isEmpty_String(d->mod.url)) { |