<feed xmlns='http://www.w3.org/2005/Atom'>
<title>atril/libview, branch libgepub-support</title>
<subtitle>MATE document viewer</subtitle>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/'/>
<entry>
<title>epub: Implement search using WebKit find controller</title>
<updated>2026-06-09T16:38:12+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-06-05T17:10:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=b1a648b9583b1368b80b988df3aa0bc0db7dc004'/>
<id>b1a648b9583b1368b80b988df3aa0bc0db7dc004</id>
<content type='text'>
Bypass the threaded EvJobFind for EPUB documents and use WebKit's
WebKitFindController directly. The threaded find job was incompatible
with GepubDoc's single-threaded design and caused segfaults. The new
approach searches within the current page using WebKit's built-in text
search and highlighting, which is both simpler and thread-safe.

Assisted-by: OpenCode:claude-opus-4-6
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Bypass the threaded EvJobFind for EPUB documents and use WebKit's
WebKitFindController directly. The threaded find job was incompatible
with GepubDoc's single-threaded design and caused segfaults. The new
approach searches within the current page using WebKit's built-in text
search and highlighting, which is both simpler and thread-safe.

Assisted-by: OpenCode:claude-opus-4-6
</pre>
</div>
</content>
</entry>
<entry>
<title>epub: Store GepubDoc handle in EvWebView and simplify navigation</title>
<updated>2026-06-09T16:38:12+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-06-05T17:03:06+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=3e7daa36411678717b833eac7866a7efd03f0bdd'/>
<id>3e7daa36411678717b833eac7866a7efd03f0bdd</id>
<content type='text'>
Store a reference to the GepubDoc in EvWebView via the new
get_doc_handle virtual method. Simplify next_page and previous_page to
just update the document model, letting the page-changed callback handle
content loading. This removes duplicate URI loading and prepares for
reimplementing search with WebKit's find controller.

Assisted-by: OpenCode:claude-opus-4-6
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Store a reference to the GepubDoc in EvWebView via the new
get_doc_handle virtual method. Simplify next_page and previous_page to
just update the document model, letting the page-changed callback handle
content loading. This removes duplicate URI loading and prepares for
reimplementing search with WebKit's find controller.

Assisted-by: OpenCode:claude-opus-4-6
</pre>
</div>
</content>
</entry>
<entry>
<title>epub: Implement night mode using WebKit user stylesheets</title>
<updated>2026-06-09T16:38:12+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-05-14T18:56:22+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=3557de01f62eb9b57db7a42c0101905c9c989efd'/>
<id>3557de01f62eb9b57db7a42c0101905c9c989efd</id>
<content type='text'>
Replace the old approach of modifying extracted HTML files on disk with
a WebKitUserStyleSheet injected via the WebKitUserContentManager. This
is cleaner and works with the new libgepub backend which no longer
extracts files to a temporary directory.

Assisted-by: OpenCode:claude-opus-4-6
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Replace the old approach of modifying extracted HTML files on disk with
a WebKitUserStyleSheet injected via the WebKitUserContentManager. This
is cleaner and works with the new libgepub backend which no longer
extracts files to a temporary directory.

Assisted-by: OpenCode:claude-opus-4-6
</pre>
</div>
</content>
</entry>
<entry>
<title>epub: Replace backend internals with libgepub</title>
<updated>2026-06-09T16:38:12+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-05-14T18:49:59+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=d6a01f8611cf9bac65b856065906c5c1358f9e7d'/>
<id>d6a01f8611cf9bac65b856065906c5c1358f9e7d</id>
<content type='text'>
Replace the hand-rolled EPUB parsing with libgepub. This removes the
bundled minizip library, custom XML utilities, and temporary directory
extraction in favor of GepubDoc which handles archive access, metadata,
spine navigation, and table of contents. An epub:// URI scheme handler
serves resources directly from the archive without extracting to disk.
Search and night mode are stubbed as no-ops pending follow-up commits.

Assisted-by: OpenCode:claude-opus-4-6
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Replace the hand-rolled EPUB parsing with libgepub. This removes the
bundled minizip library, custom XML utilities, and temporary directory
extraction in favor of GepubDoc which handles archive access, metadata,
spine navigation, and table of contents. An epub:// URI scheme handler
serves resources directly from the archive without extracting to disk.
Search and night mode are stubbed as no-ops pending follow-up commits.

Assisted-by: OpenCode:claude-opus-4-6
</pre>
</div>
</content>
</entry>
<entry>
<title>epub: Add libgepub-0.7 build dependency</title>
<updated>2026-06-08T16:09:44+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-05-14T18:16:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=bedd5f88456901cefd7e1d50b18c798205bb6897'/>
<id>bedd5f88456901cefd7e1d50b18c798205bb6897</id>
<content type='text'>
Add libgepub as a required dependency for the EPUB backend in both meson
and autotools build systems. No source code changes yet, but this
prepares for replacing the hand-rolled EPUB parsing with libgepub.

Assisted-by: OpenCode:claude-opus-4-6
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add libgepub as a required dependency for the EPUB backend in both meson
and autotools build systems. No source code changes yet, but this
prepares for replacing the hand-rolled EPUB parsing with libgepub.

Assisted-by: OpenCode:claude-opus-4-6
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix and off-by-one error for fit-to-page zoom</title>
<updated>2026-05-27T16:00:14+00:00</updated>
<author>
<name>Ulrich Spörlein</name>
<email>uspoerlein@gmail.com</email>
</author>
<published>2026-05-08T13:14:07+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=22edb7f56f2a667177723a32a57a13fa077ddd47'/>
<id>22edb7f56f2a667177723a32a57a13fa077ddd47</id>
<content type='text'>
In dual pane mode, with a mix of landscape and portrait pages, the wrong
zoom level was getting applied to the wrong panes.

For comic book spreads with the right side page being double-wide, this
was ok. But when the left-page was double-wide, the extra zoom was
applied to the *preceeding* dual pane view (making it extra small) and
the actual wider pane got the standard zoom factor applied.

Add debug logging showing the decision being made, which uncoveres the
bug.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In dual pane mode, with a mix of landscape and portrait pages, the wrong
zoom level was getting applied to the wrong panes.

For comic book spreads with the right side page being double-wide, this
was ok. But when the left-page was double-wide, the extra zoom was
applied to the *preceeding* dual pane view (making it extra small) and
the actual wider pane got the standard zoom factor applied.

Add debug logging showing the decision being made, which uncoveres the
bug.
</pre>
</div>
</content>
</entry>
<entry>
<title>libview: Account for device scale in page cache size calculation</title>
<updated>2026-04-10T15:37:36+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-04-10T15:30:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=269e7f6c1413fd3d4724d60bc5f82324a2dbf2b6'/>
<id>269e7f6c1413fd3d4724d60bc5f82324a2dbf2b6</id>
<content type='text'>
On HiDPI displays, rendered pages use more memory than the cache budget
expects because the size calculation does not account for the device
scale factor. This causes the cache to use up to 4x more memory than
configured on 2x HiDPI displays.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
On HiDPI displays, rendered pages use more memory than the cache budget
expects because the size calculation does not account for the device
scale factor. This causes the cache to use up to 4x more memory than
configured on 2x HiDPI displays.
</pre>
</div>
</content>
</entry>
<entry>
<title>libview: Allow zooming to the limits of the scale</title>
<updated>2026-04-10T15:37:36+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-03-05T21:18:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=49883fad1a18dd15e6251116ee42dfb16be2a826'/>
<id>49883fad1a18dd15e6251116ee42dfb16be2a826</id>
<content type='text'>
If the current zoom level was within one zoom factor of the limit, it
was not possible to scroll towards the limit. This made smooth scrolling
near the limit awkward, as unless the scroll event had a large delta it
was impossible to reach the zoom limit. Non-smooth scrolling was also
affected, but it was just much more difficult to trigger.

Fix this by allowing zooming while the current zoom level is within one
zoom factor of the limit. Add a new ev_view_can_zoom() function to make
zooming by a factor (as with smooth scrolling) more convenient.

Backported from https://gitlab.gnome.org/GNOME/evince/-/commit/6d299b69
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If the current zoom level was within one zoom factor of the limit, it
was not possible to scroll towards the limit. This made smooth scrolling
near the limit awkward, as unless the scroll event had a large delta it
was impossible to reach the zoom limit. Non-smooth scrolling was also
affected, but it was just much more difficult to trigger.

Fix this by allowing zooming while the current zoom level is within one
zoom factor of the limit. Add a new ev_view_can_zoom() function to make
zooming by a factor (as with smooth scrolling) more convenient.

Backported from https://gitlab.gnome.org/GNOME/evince/-/commit/6d299b69
</pre>
</div>
</content>
</entry>
<entry>
<title>Use properties for can-zoom-in and -out</title>
<updated>2026-04-10T15:37:36+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-03-05T21:08:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=fe4d7a0c9d05f5070f1d209db5eff4886f914c7b'/>
<id>fe4d7a0c9d05f5070f1d209db5eff4886f914c7b</id>
<content type='text'>
This simplifies the logic required to enable zoom actions for
consumers of the view.

Backported from https://gitlab.gnome.org/GNOME/evince/-/commit/bbfbf913
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This simplifies the logic required to enable zoom actions for
consumers of the view.

Backported from https://gitlab.gnome.org/GNOME/evince/-/commit/bbfbf913
</pre>
</div>
</content>
</entry>
<entry>
<title>Improve search system</title>
<updated>2026-02-13T15:32:41+00:00</updated>
<author>
<name>mbkma</name>
<email>johannes.unruh@fau.de</email>
</author>
<published>2021-06-04T15:42:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=c651e208c45e804d74d8e85cdcc29cb123c20800'/>
<id>c651e208c45e804d74d8e85cdcc29cb123c20800</id>
<content type='text'>
shell: Add EvFindSidebar widget to show search results
see https://gitlab.gnome.org/GNOME/evince/-/commit/940ce8048e4fc6503dca03c1ce090ff4a11dface

eggfindbar: don't close the findbar when it loses the focus
see https://gitlab.gnome.org/GNOME/evince/-/commit/a2d781fb124bd19861035fd41dacc976e00d19ef

shell: Add the findbar to the main box instead of the view box

libview: Add ev_view_find_set_result
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
shell: Add EvFindSidebar widget to show search results
see https://gitlab.gnome.org/GNOME/evince/-/commit/940ce8048e4fc6503dca03c1ce090ff4a11dface

eggfindbar: don't close the findbar when it loses the focus
see https://gitlab.gnome.org/GNOME/evince/-/commit/a2d781fb124bd19861035fd41dacc976e00d19ef

shell: Add the findbar to the main box instead of the view box

libview: Add ev_view_find_set_result
</pre>
</div>
</content>
</entry>
</feed>
