ZathuraRenderer is a thread pool rendering the pages. Every page widget holds a
ZathuraRenderRequest instance to request its page to be rendered. This object
can also be used to abort the request in case the page is not visible anymore.
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
This patch adds some enhancements/fixes to the bookmarking feature of Zathura:
- Bookmark the exact vertical and horizontal adjustments values, along with
the page number. This is done in a backward-compatible way for both the
plain and sqlite database backends, so that bookmarks that was taken
previously (bookmarking only the page number) will still work as expected
and won't be lost.
- Fix the issue of not being able to remove bookmarks from the plain
database; removing a bookmark in plain_remove_bookmark using
g_key_file_remove_key corrupts the bookmarks file. This is due to not
truncating the entire bookmarks file in zathura_db_write_key_file_to_file
prior to overriding it with a new one not containing the removed line.
This is why, I guess, plain_remove_bookmark hadn't been implemented as
expected using g_key_file_remove_key, because apparently, someone thought
that the problem is caused by this API.
- Fix not being able to update existing bookmarks persistently; updating a
bookmark works only during the current session, but after the file is
closed and reopened, the updated bookmark still has it's old value. This
is due to changing only the bookmark structure in memory; the proper way
to do it, is to call zathura_db_remove_bookmark on the old bookmark, then
follow that by a call to zathura_db_add_bookmark on a bookmark structure
containing the new position and the same old ID.
- Make zathura_bookmark_add updates the bookmark if it already exists,
rather than doing this externally in cmd_bookmark_create. This allows us
to have all the relevant girara_notify messages in cmd_bookmark_create.
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
This patch activates the last aborted search when pressing the search shortcuts
('n' or 'N').
To avoid confusion, and to make things more predictable, I've chosen to always
reactivate an aborted search starting from the beginning (or end, in case of
'N' or '?') of the current page, as opposed to Vim which continues from the
next search term each time the search is reactivated.
Searching using '/' or '?' doesn't center the view at the current search term
like when using 'n' or 'N', so we fix this here.
Also, I managed to work around the issue of the thin rectangular margins that
show around the previously-highlighted search terms after the search is aborted
(either explicitly or as a result of following links), by redrawing the page
widget (only if it's visible) instead of redrawing the rectangles covering the
highlighted search terms.
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
If '--page [number]' (or '-P [number]') is given on the command-line,
the document is opened at the specified page number. Negative numbers
are allowed, and denote a page number starting from the end of the
document.
See issue 275 <http://bugs.pwmt.org/issue275>.
Reported-by: bob <sean258@gmail.com>
This is a temporary workaround because of issues in the poppler plugin. We
really need to introduce locking in the poppler plugin and remove the render
locks agains.
Closes: #253