| Age | Commit message (Collapse) | Author | Files | Lines |
|
The previous fix notified every page that currently has a selection, but
that still got the wrong page: removing a selection on one page while
another page's selection stays untouched reported the change on the
untouched page instead of the one it actually happened on.
Now we compare against the previous selection state and only notify
pages that gained, lost, or changed a selection.
Fixes #721
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
Add a get_doc_handle virtual method to EvDocumentClass so the view layer
can obtain the underlying GepubDoc without depending on backend types
directly. This prepares for replacing EvWebView with GepubWidget which
needs the GepubDoc to render content.
Assisted-by: OpenCode:claude-opus-4-6
|
|
WebKit2GTK renders MathML natively so the MathJax script injection is no
longer needed. Remove the mathjax-directory build option, the
auto-detection logic, and the CI package dependency.
Assisted-by: OpenCode:claude-opus-4-6
|
|
Remove the bundled minizip directory, unused includes, and the night
mode virtual methods from EvDocumentClass which are no longer called by
any code. Night mode is now handled entirely through WebKit user
stylesheets.
Assisted-by: OpenCode:claude-opus-4-6
|
|
Pre-compute all page URI paths at load time so get_page is thread-safe
and does not mutate GepubDoc state. Remove the EvDocumentFind interface
because the threaded find job is incompatible with the single-threaded
GepubDoc and WebKit. EPUB search will be reimplemented using WebKit's
native find controller in a future commit.
Assisted-by: OpenCode:claude-opus-4-6
|
|
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
|
|
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
|
|
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
|
|
When enabled links are not allowed to change the current zoom mode and
level.
Fixes #712
Backported from https://gitlab.gnome.org/GNOME/evince/-/commit/5d8ef0fa
|
|
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '7'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <[email protected]>
|
|
Bumps [actions/cache](https://github.com/actions/cache) from 5 to 6.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v5...v6)
---
updated-dependencies:
- dependency-name: actions/cache
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <[email protected]>
|
|
EPUB files with missing or incomplete metadata (like no title or missing
navigation elements) can cause NULL pointer dereferences in the XML
parsing functions. This adds NULL checks to xml_parse_children_of_node,
get_child_list, and the TOC text parsing loop.
Fixes #707
|
|
Adds a new --reset-metadata command-line option that clears all stored
metadata (page position, zoom level, window geometry, etc.) for
specified document files before opening them. This allows users to open
documents with a fresh state, ignoring any previously remembered
settings.
|
|
|
|
|
|
|
|
Change the caja extension feature option to default to 'auto' instead of
'enabled', so that atril builds on systems without libcaja-extension.
|
|
Fixes #673
Backported from https://gitlab.gnome.org/GNOME/evince/-/commit/021428c9
|
|
Check that the content file exists before attempting to parse it, and
handle failures in document title extraction gracefully.
|
|
Replace manual byte-by-byte copy loop with g_strndup when extracting the
directory component from the epub container's full-path attribute.
|
|
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.
|
|
|
|
The sidebar settings were ignored when opening documents on systems
without GVFS metadata support.
Now when metadata is not available, we use whatever is in gsettings, and
when metadata is available, we respect the per-document state.
Fixes #163
|
|
Underline icon is used for squiggly annotations in the sidebar.
Backported from https://gitlab.gnome.org/GNOME/evince/-/commit/9f790bed
|
|
This adds support to the pdf backend for loading and saving
text markup annotations of subtype Squiggly.
Backported from https://gitlab.gnome.org/GNOME/evince/-/commit/5702e401
|
|
This adds the type to libdocument, as well as a method
to create such annotations.
Backported from https://gitlab.gnome.org/GNOME/evince/-/commit/81c268b8
|
|
Backported from https://gitlab.gnome.org/GNOME/evince/-/commit/4bd88ed0
|
|
Backported from https://gitlab.gnome.org/GNOME/evince/-/commit/9b71d67e
|
|
And a type property for the different kinds of text markup annotations
Backported from https://gitlab.gnome.org/GNOME/evince/-/commit/28e04b43
|
|
Backported from https://gitlab.gnome.org/GNOME/evince/-/commit/18595cc3
|
|
Implementing the type and a method to create
highlight annotations.
Backported from https://gitlab.gnome.org/GNOME/evince/-/commit/53c349e8
|
|
Implementing the type and a method to create
highlight annotations.
Backported from https://gitlab.gnome.org/GNOME/evince/-/commit/6a6135d8
|
|
Implementing the (trivial) class
EvAnnotationTextMarkup and fixing a typo.
Backported from https://gitlab.gnome.org/GNOME/evince/-/commit/714c34dc
|
|
this prevent weblate processing
|
|
cmn is same as zh_cn
es_ES is same as es
|
|
|
|
|
|
When spawning a new atril instance for cross-document links, the
destination and search parameters from the document were interpolated
directly into the command line without shell quoting. Values containing
spaces or special characters could be split into separate arguments by
the shell parser, potentially being interpreted as unintended flags by
the child process.
Apply shell quoting to page label, named destination, and search string
values before appending them to the command line, consistent with how
other spawn sites in the codebase already handle this.
|
|
* update pot files
* retrieve last transifex translations
* remove empty po file
* add translation coverage badge
* fix invalid po files
|
|
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.
|
|
Using 50 MiB is not enough to show an A0-sized document in a HiDPI
display. This bumps the page cache size to 500 MiB to provide enough
headroom. This memory is not pre-allocated, it just provides a safety
limit.
|
|
Cairo surfaces have a limit of 32767px in any dimension, so we make sure
that we don't end up zooming in past the point where the rendered
surface is larger than that limit.
|
|
Measuring image dimensions based on rotation is unnecessary, since the
result is either w×h or h×w, which is commutative.
|