Ideally we would handle this differently. See the TODO entry in the render
function. But the patch is a start.
Thanks to carlos for the patch.
Closes: #398
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
All of those callbacks are conceptually related (change the page
layout), and depend from one another.
Now the single callback page_layout_value_changed defers to
page_widget_set_mode to change whatever is needed in the GTK widgets.
This patch adds a new configuration setting, selection-clipboard, which allows
us to choose between the PRIMARY selection, and the CLIPBOARD selection, for
determining which X clipboard to use for storing mouse-selected data. It has
only two valid values: "primary" and "clipboard", with "clipboard" being set as
the it's default value.
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
This patch implements two new ZathuraDatabaseInterface functions, save_jumplist
and load_jumplist, for both the plain and sqlite backends (along with some
cleanups).
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
- Don't delete the elements on the right of the current one, when
appending a new jump to the jumplist, because this makes no sense at
all; the point of the jumplist in the first place is to remember
previously jumped-to positions in the document, so there is no need
to delete anythings except to trim the oldest entries from the
beginning to maintain the maximum size. This also makes us compatible
with the Vim way of doing things.
- Make the jumplist mechanism functional on the same page; if we
followed a link to a target on the same page, remember the
adjustments before and after following the link. The same holds for
navigating search results on the same page.
- Implement position_set and use it instead of position_set_delayed
when following links in order to give zathura_jumplist_save a chance
to record the exact adjustments of the link target. Otherwise, it
will always record the adjustments after going to the target page,
but before going to the exact position within it.
- Don't consider movements with ^i and ^o as jumps :)
- Don't use page_set followed by setting the adjustments in
sc_jumplist, because this is redundant and causes clutter when using
^i and ^o, as the adjustments is set twice this way (once in page_set
and again in position_set_delayed). It's enough to only update the
page number on the statusbar and then set the adjustments.
- Hide implementation details (zathura_jumplist_save and
zathura_jumplist_append), and make things more consistent by
exporting and using only zathura_jumplist_add for adding new entries.
The end result: A more slick jumping experience :-)
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
This uses the jumplist to implement a bisect functionality between the
last two jump points. ^j and ^k are bound to bisect forward and backward
respectively.
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
Added config parameter "link-hadjust" with default value true. When set to false,
following internal links do not change the horizontal position of the page, only
the vertical position.
Also updates page number when following links, now.
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
This patch implements a page cache that is invalidated in a LRU fashion.
Pages are added to the cache as soon as they become visible. When the cache is
full and a new page that isn't in the cache becomes visible, the least recently
viewed page in the cache is evicted from memory and the new one takes it's
place.
The cache size is configurable using the page-cache-size configuration
variable, with a default value of 15 pages. Very large values for the cache
size are not recommended, though, as it will stress the system memory out.
The old periodic page reclaiming code is no longer necessary with this patch,
so I removed it.
Special thanks to Ignas Anikevičius, and Sebastian Ramacher for the
inspirations.
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
Now by default, 'q' quits zathura even in fullscreen mode, and
'BackSpace' does the reverse of 'space', i.e. go back one page.
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
Previously it was set to -1, which was essentially disabling the
horizontal scrolling. This enables the scrolling by default by setting
it to be the same as the vertical scrolling.
Signed-off-by: Ignas Anikevicius (gns_ank) <anikevicius@gmail.com>
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
"focus_inputbar" and "toggle_page_mode" were defined in code but not
declared as shortcut functions (and thus could not be mapped to
different keys by the user using "map").
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
Also alphabetize the shortcut functions declarations in code, to make it
easier to keep the documentation and code in sync.
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
This is useful when the text of the link doesn't match its target. The
default key is set to 'F'.
See issue 266 <http://bugs.pwmt.org/issue266>.
Reported-by: Iron <o380770@rtrtr.com>
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>