<feed xmlns='http://www.w3.org/2005/Atom'>
<title>atril/libview, branch atspi-selection-fixes</title>
<subtitle>MATE document viewer</subtitle>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/'/>
<entry>
<title>a11y: allow selecting through the very last character</title>
<updated>2026-08-05T18:42:35+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-08-05T18:42:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=f8cd470113bc84c93b20e29bd460ebd8338aa5b1'/>
<id>f8cd470113bc84c93b20e29bd460ebd8338aa5b1</id>
<content type='text'>
Selecting the entire document text failed silently and nothing got
selected. The code was rejecting a valid request to select all the way
to the end of the text, treating it as out of range instead.

Now that request is accepted, so selecting through the last character
works as expected.

Fixes #718
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Selecting the entire document text failed silently and nothing got
selected. The code was rejecting a valid request to select all the way
to the end of the text, treating it as out of range instead.

Now that request is accepted, so selecting through the last character
works as expected.

Fixes #718
</pre>
</div>
</content>
</entry>
<entry>
<title>a11y: keep selections on other pages when adding or removing one</title>
<updated>2026-08-05T18:26:58+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-08-05T18:15:37+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=55825e1428773100781ef0643432590238f3432b'/>
<id>55825e1428773100781ef0643432590238f3432b</id>
<content type='text'>
Selecting text on one page and then selecting more text on another page
was wiping out the first selection instead of adding to it. The same
problem hit in reverse: removing the selection on one page was clearing
every other page's selection too.

Both operations now only touch the page they're actually asked about,
leaving selections on other pages alone.

Fixes #722
Fixes #723
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Selecting text on one page and then selecting more text on another page
was wiping out the first selection instead of adding to it. The same
problem hit in reverse: removing the selection on one page was clearing
every other page's selection too.

Both operations now only touch the page they're actually asked about,
leaving selections on other pages alone.

Fixes #722
Fixes #723
</pre>
</div>
</content>
</entry>
<entry>
<title>a11y: report selection changes on the right page</title>
<updated>2026-08-05T18:20:59+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-08-05T13:40:58+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=768029f73951debffb1ec0657219db68b66349ee'/>
<id>768029f73951debffb1ec0657219db68b66349ee</id>
<content type='text'>
When text was selected, assistive technologies were sometimes told the
change happened on the wrong page where nothing was selected at all.

Instead of guessing which page to report, we now check every page that
actually has a selection and notify each one.

Fixes #721
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When text was selected, assistive technologies were sometimes told the
change happened on the wrong page where nothing was selected at all.

Instead of guessing which page to report, we now check every page that
actually has a selection and notify each one.

Fixes #721
</pre>
</div>
</content>
</entry>
<entry>
<title>a11y: fix selection bleeding into the previous line</title>
<updated>2026-08-05T18:20:33+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-08-05T13:28:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=eee9e3ce680f02378b4d0a3a03afa0615f21c41f'/>
<id>eee9e3ce680f02378b4d0a3a03afa0615f21c41f</id>
<content type='text'>
Selecting a range of text sometimes grabbed an extra line above what was
actually asked for.

The selection boundaries were anchored to the very top and bottom edge
of the first and last characters, which could stray into the line next
door. Anchoring to the middle of each character instead keeps the
selection where it belongs.

Fixes #720
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Selecting a range of text sometimes grabbed an extra line above what was
actually asked for.

The selection boundaries were anchored to the very top and bottom edge
of the first and last characters, which could stray into the line next
door. Anchoring to the middle of each character instead keeps the
selection where it belongs.

Fixes #720
</pre>
</div>
</content>
</entry>
<entry>
<title>a11y: implement text selection support for pages</title>
<updated>2026-08-05T18:17:50+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-08-05T13:09:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=9a945a7951ae40427182b4aba1976136256ba42b'/>
<id>9a945a7951ae40427182b4aba1976136256ba42b</id>
<content type='text'>
Assistive technologies asking Atril to select a range of text got no
response and the request would silently fail with nothing selected.

The selection code already existed but was never hooked up, so it just
needed to be wired in.

Fixes #719
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Assistive technologies asking Atril to select a range of text got no
response and the request would silently fail with nothing selected.

The selection code already existed but was never hooked up, so it just
needed to be wired in.

Fixes #719
</pre>
</div>
</content>
</entry>
<entry>
<title>epub: Implement search using WebKit find controller</title>
<updated>2026-07-12T20:34:07+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=ca0d4153739b8c892f49e97a20c39436a8a5893f'/>
<id>ca0d4153739b8c892f49e97a20c39436a8a5893f</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-07-12T20:34:07+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=53a43e8f21133eee47195d1ba3df2b042d386baa'/>
<id>53a43e8f21133eee47195d1ba3df2b042d386baa</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-07-12T20:34:07+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=33f98fed951869cca9803ab52084693832b57a0e'/>
<id>33f98fed951869cca9803ab52084693832b57a0e</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-07-12T20:34:07+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=c429210e1cdbd648caa46b0621029992eb777f7a'/>
<id>c429210e1cdbd648caa46b0621029992eb777f7a</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-07-12T20:34:07+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=789af2fb86aa6fbb5ec42370bc672afb6a84478e'/>
<id>789af2fb86aa6fbb5ec42370bc672afb6a84478e</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>
</feed>
