Commit Graph

483 Commits

Author SHA1 Message Date
Marwan Tanager
99b32ae109 Make the jumplist persistent on a per-file basis
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>
2013-06-29 11:35:29 +02:00
Marwan Tanager
87a7f2310f Hide the inputbar and completion menu before saving the adjustments ratios into a new jump structure
Since we are now saving the adjustments ratios in the jump structures, we need
to take care of the following scenario:

    - We do an action that results in a new jump structure being added to the
      jumplist while the inputbar is visible (e.g., search, jumping to a
      specific page, jumping to a bookmark, or following a link).

    - Since we are now storing the adjustments ratios in the jump structures,
      all of the above actions would result in the vertical adjustment ratio
      being saved while the inputbar and/or the completion menu is visible.

    - Now we are exactly on the target of the jump (note that the inputbar and
      completion menu now are hidden), so suppose that we want to go back using
      ^o (assuming that we didn't change the adjustments after jumping), then
      the check at sc_jumplist that compares the current adjustments ratios
      with that of the current jump (the jump that has just been added and
      which we are currently on it's position) would fail, because after the
      inputbar (with possibly the completion menu in case of bookmarks) is
      activated it is hidden, which results in the vertical adjustment upper
      bound to change, which in turn results in the vertical adjustment ratio
      returned by zathura_adjustment_get_ratio to become different from what is
      stored in the current jump structure, even though we haven't changed the
      adjustments at all after the jump.  This would always result in taking us
      back to the exact position of the jump (which would be slightly different
      from the current position) when we press ^o.  This can be annoying,
      because it would happen, for example, every time we need to go back
      quickly after jumping to a link target, a search result, or a bookmark.

So, what this patch does is essentially to make the vertical adjustment ratio
reflecting the current vertical adjustment after a jump, to always be the same
as the one stored in the newly added jump structure, since both are calculated
with zathura_adjustment_get_ratio while the inputbar is _not_ visible, so they
should be the same.

I've elaborated just to make things clear, in case the purpose of the patch
isn't obvious.

Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
2013-06-29 11:35:13 +02:00
Marwan Tanager
7465ad6871 Jumplist: record the adjustments ratios, rather than their values
This makes jumping works accurately, even if the document is scaled up or down.

Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
2013-06-29 11:35:11 +02:00
Marwan Tanager
afd008f466 Enhancements/Cleanups for the jumplist mechansim
- 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>
2013-06-10 14:48:10 +02:00
Moritz Lipp
cdece59229 Fix previous commit 2013-05-28 18:12:15 +02:00
Moritz Lipp
cf96d52790 Report missing plugin/unsupported file type 2013-05-28 17:00:37 +02:00
Moritz Lipp
c07e7a0c39 Unref page twice (Temporary fix #274) 2013-04-17 13:42:03 +02:00
Abdo Roig-Maranges
d05ecc3043 added function to check whether current jump is first or last
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
2013-04-02 21:22:20 +02:00
Abdó Roig-Maranges
8e9631946d Option to keep horizontal position when following internal links
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>
2013-04-02 14:30:44 +02:00
Marwan Tanager
964bdde27f Use gint64 for view time instead of guint64.
The last_view member in zathura_page_widget_private_s is gint64, so we should
do the same here.

Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
2013-03-29 18:33:15 +01:00
Sebastian Ramacher
4b7347efa7 We get an int from girara_config_get
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
2013-03-26 13:03:07 +01:00
Sebastian Ramacher
1440b45299 Make sure that the page size is positive
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
2013-03-26 12:53:16 +01:00
Marwan Tanager
cb18fe8603 Replace the periodic page reclaiming code with a LRU caching algorithm.
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>
2013-03-26 12:45:43 +01:00
Benoît Knecht
c9eef95492 Use signals to readjust_view_after_zooming()
Instead of guesstimating the values of the scrollbars adjustments after
a change in zoom level, connect callbacks to the "changed" GtkAdjustment
event (which is emitted when the bounds or page_size of the adjustment
change, e.g. when the zoom level changes), and compute the new values
from there.

The previous adjustment values are tracked in zathura->ui.hadjustment
and zathura->ui.vadjustment (and updated by signal handlers as well), so
that the view's position can be maintained while zooming.

cb_view_hadjustment_changed() centers the page horizontally if a
"best-fit" or "width" zoom is being performed, or if "zoom-center" is
true; otherwise, it keeps the view horizontally centered around the same
area of the page.

cb_view_vadjustment_changed() always keeps the view vertically centered
around the same area of the page.

Many thanks to Marwan Tanager for thoroughly reviewing the various
stages of this patch, and actually coming up with a working solution.

Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
2013-03-23 16:02:56 +01:00
Sebastian Ramacher
9b1a037fe0 Merge branch 'history-io' into develop 2013-03-17 16:25:19 +01:00
Sebastian Ramacher
c20b5e25c7 Use the correct command history
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
2013-03-17 16:25:02 +01:00
Sebastian Ramacher
92f8784605 Implement input history IO in plain database
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
2013-03-17 16:19:10 +01:00
Benoît Knecht
27c291758e Add a '--page' option to open at the specified page
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>
2013-03-17 11:30:22 +01:00
Sebastian Ramacher
fd07d3f5cf Merge branch 'develop' of pwmt.org:zathura into develop 2013-03-14 22:41:57 +01:00
Sebastian Ramacher
47eddd0e86 Implement sqlite backend for input history
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
2013-03-14 22:20:51 +01:00
Sebastian Ramacher
b5dbe9ff6d Drop zathura_db_free
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
2013-03-14 21:30:40 +01:00
Moritz Lipp
42cae85f80 Show warning if document does not contain any pages 2013-03-11 23:26:14 +01:00
Sebastian Ramacher
438c9cdc9f Add statusbar-basename option
Thanks to oblique for the patch.

Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
2013-02-28 16:20:54 +01:00
Rob Cornish
723f1535e1 Document saves with current basename if given a directory
Currently, if :write is given a directory name as its argument, it fails with the "Failed to save document." error. This can sometimes be quite annoying: for instance, when viewing documents that have been downloaded to /tmp from the web, I often find myself wanting to hang on to file without changing its file name. In order to do so, I either have to leave Zathura and cp the file or else retype the whole filename after :write, neither of which are too convenient.

The following patch would make :write work sort of how mv does: if its argument is a currently existing directory, it will be inferred that the user wants to save the document in that directory using its current basename.

Signed-off-by: Sebastian Ramacher <sebastian@ramacher.at>
2013-01-17 14:28:19 +01:00
Sebastian Ramacher
a6e6c3f108 demote some info-level messages to debug 2013-01-15 11:31:35 +01:00
Rob Cornish
1a6b03fc62 Fixed reverse searching behaviour to be more like less/vi
Signed-off-by: Sebastian Ramacher <sebastian@ramacher.at>
2012-12-19 00:29:31 +01:00
Benoît Knecht
824843a917 Correct misspellings of the word "synctex"
Both in the documentation and in function names, "synctex" was sometimes
spelled "syntex" or "syntec".

Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
2012-12-06 20:34:14 +01:00
Moritz Lipp
89e7832047 Update style 2012-10-09 01:12:18 +02:00
Moritz Lipp
ac88923e5b Print error message if directory creation failed 2012-10-05 00:51:28 +02:00
Sebastian Ramacher
e79a48452f Honor the current zoom level.
Otherwise jump positions are off after changing the zoom level.
2012-09-02 00:44:58 +02:00
Abdó Roig-Maranges
eb67d97180 Implemented jumplist bound to ^o ^i
zathura records jumps through searches, index, links, etc. and enables to go
back and forth via ^o ^i.

Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
2012-09-02 00:31:47 +02:00
Moritz Lipp
f6c6b4a883 En/Disable syntex support 2012-08-13 18:17:20 +02:00
Sebastian Ramacher
30bb64c53d Update German translation. 2012-08-05 15:56:35 +02:00
Moritz Lipp
ec554bc33d Parse command line arguments in main 2012-08-05 15:34:10 +02:00
Moritz Lipp
83865d8998 Use GtkGrid instead of GtkTable 2012-08-05 02:30:03 +02:00
Sebastian Ramacher
49116a0834 Synctex backwards synchronization
Thanks to Roland Schatz for the patch.
2012-07-13 15:39:16 +02:00
Sebastian Ramacher
79cdc73951 Use correct default values. 2012-07-13 14:05:07 +02:00
Moritz Lipp
627a0749bc Update style 2012-07-12 10:39:21 +02:00
Moritz Lipp
66b6fa65a1 Add --version command line argument 2012-07-12 10:37:58 +02:00
Sebastian Ramacher
6b41759cbb Add option to use basename in window title (Closes: #229) 2012-07-02 14:13:13 +02:00
Sebastian Ramacher
6d462f4732 Implement first-page-column.
Thanks to J. Commelin for the patch.
2012-06-27 22:34:16 +02:00
Sebastian Ramacher
aa2abd0bc4 more debug output 2012-06-20 16:41:01 +02:00
Glen Winters
7603897b84 Fixed data directory bug 2012-05-28 09:08:49 +02:00
Moritz Lipp
aee30212d1 Unref page widgets 2012-05-08 17:10:57 +02:00
Moritz Lipp
02582692f9 Fix two memory leaks 2012-05-08 17:02:18 +02:00
Moritz Lipp
583017a836 Apply adjust-open only to unknown files 2012-05-07 00:32:55 +02:00
Moritz Lipp
800d039293 Check for numeric events 2012-05-01 19:09:33 +02:00
Moritz Lipp
e4c145a67e Use set_adjustment in position_set_delayed_impl 2012-05-01 13:39:22 +02:00
Moritz Lipp
b4f8fe3b5c Restore 'pages-per-row' value 2012-04-29 06:26:38 +02:00
Moritz Lipp
0c0a5f266c Open multiple arguments
It is now possible to open multiple files by passing them as additional
arguments. The password can now be set with the -w/--password parameter
instead of the argument after the filename.
2012-04-27 12:44:05 +02:00
Moritz Lipp
abe6755558 Added missing initializer 2012-04-24 13:46:00 +02:00
Moritz Lipp
a86940b3f4 Implement ZATHURA_LINK_GOTO_REMOTE 2012-04-22 11:11:36 +02:00
Moritz Lipp
adc9f41264 Introduce new link types 2012-04-22 10:04:46 +02:00
Moritz Lipp
6a30019b4e Add missing return value 2012-04-21 10:39:24 +02:00
Moritz Lipp
7d92d54539 Implemented marks 2012-04-21 04:59:58 +02:00
Moritz Lipp
488ab101e9 Set default adjust mode to none 2012-04-21 00:00:03 +02:00
Moritz Lipp
370deafb92 Save pages-per-row/position_x/position_y in database 2012-04-20 23:35:48 +02:00
Moritz Lipp
798c97f4a6 Introduce zathura_fileinfo_t and update database interface 2012-04-20 21:15:03 +02:00
Moritz Lipp
f239ea145c Free index if document gets closed 2012-04-16 09:17:50 +02:00
Sebastian Ramacher
d9f5889415 Use the information from the file info. 2012-04-07 16:00:51 +02:00
Moritz Lipp
97247f41ca Unhitch zathura_t from document_t/page_t/plugin_manager_t 2012-04-03 09:02:45 +02:00
Moritz Lipp
025c995d89 Introduce plugin manager 2012-04-01 18:32:16 +02:00
Moritz Lipp
334b4fbb95 Introduce and use zathura_document wrapper functions 2012-03-27 21:59:35 +02:00
Moritz Lipp
4ade2c1472 Introduced plugin.h and plugin-api.h 2012-03-27 13:30:04 +02:00
Moritz Lipp
efc108fbe2 Introduced page.h 2012-03-26 14:44:56 +02:00
Moritz Lipp
fab515a42c Readjust window if new document has been opened 2012-03-25 20:31:19 +02:00
Moritz Lipp
90796b5b5c Added :offset command and some style updates 2012-03-24 18:27:10 +01:00
Sebastian Ramacher
64905f282b Remove invisible pages from the memory. 2012-03-24 16:15:34 +01:00
Sebastian Ramacher
9cacecaa5b A missing comma. 2012-03-23 21:21:07 +01:00
Sebastian Ramacher
0c85d41c6c Add command line option to set the log level. 2012-03-23 19:28:20 +01:00
Moritz Lipp
a9b6ac1ac8 Remove unnecessary initializations 2012-03-22 17:15:08 +01:00
Sebastian Ramacher
21579797cd Update translations. 2012-03-16 15:59:23 +01:00
Sebastian Ramacher
9fe03f72e2 Allow page-padding to be changed. 2012-03-16 15:47:30 +01:00
Sebastian Ramacher
b4094c4c75 Translate 'No name'. 2012-03-16 13:42:15 +01:00
Moritz Lipp
3bc6224976 Update title with file path 2012-03-16 07:58:55 +01:00
Moritz Lipp
593d8063fe Close open document in cb_destroy 2012-03-07 01:11:18 +01:00
Moritz Lipp
0049b6fa4b Notify if an error occurs in the :write command 2012-03-04 23:54:03 +01:00
Sebastian Ramacher
667c821600 Merge branch 'develop-database' into develop
Conflicts:
	database-plain.c
2012-03-04 18:52:31 +01:00
Sebastian Ramacher
9ac4bdf0b0 A first step towards localization. 2012-03-04 18:35:16 +01:00
Sebastian Ramacher
4b559e585b Implement support to use both database backends. 2012-03-04 15:56:54 +01:00
Sebastian Ramacher
557f968875 Don't overwrite variables stored in file_monitor (Closes: #120) 2012-03-02 20:34:41 +01:00
Moritz Lipp
9202774990 Fixed some memory leaks 2012-02-28 08:32:34 +01:00
Moritz Lipp
bc7878da0e Update statusbar in page_set 2012-02-21 22:12:44 +01:00
Moritz Lipp
a4b4c91dae Calculate current page number only if scrolling 2012-02-21 20:39:42 +01:00
Moritz Lipp
8219d48eba Reload correct page when re-opening known file 2012-02-20 20:13:53 +01:00
Moritz Lipp
b6f1868e7f Fix automatic file reloading 2012-02-20 20:07:24 +01:00
Moritz Lipp
b8470a5317 Set current page number in page_set 2012-02-20 12:40:25 +01:00
Moritz Lipp
394fbd934d Update style 2012-02-17 00:43:01 +01:00
Sebastian Ramacher
0251fb75dd use gdk_threads_add_idle instead of g_idle_add 2012-02-16 16:18:12 +01:00
Sebastian Ramacher
e7f0e30d99 only call sc_adjust_window if the allocation of the window really changed 2012-02-14 15:53:04 +01:00
Sebastian Ramacher
2f38126a7a make the recolor colors changeable too 2012-02-14 14:53:45 +01:00
Sebastian Ramacher
9d04a7bfcf make highlight colors configurable during runtime 2012-02-14 14:46:19 +01:00
Sebastian Ramacher
69b5cb0be5 more GTK+3 support 2012-02-14 13:53:26 +01:00
Sebastian Ramacher
16336cf065 Merge branch 'develop' of pwmt.org:zathura into develop 2012-02-13 12:44:44 +01:00
Sebastian Ramacher
a4fab8c368 some more work to be compatible with GTK+3 2012-02-13 12:43:22 +01:00
Moritz Lipp
b59e5686ec Update style 2012-02-12 16:35:33 +01:00
Moritz Lipp
851ef7cd7b Adjust on resize / Adjust on open 2012-02-09 01:46:51 +01:00
Sebastian Ramacher
bd8097d5b2 don't add +1 to current page number 2012-02-08 23:38:22 +01:00
Sebastian Ramacher
e513cb5579 store rotation in history 2012-02-08 22:23:45 +01:00
Sebastian Ramacher
c6403ec097 wrap gtk_adjustment_set_value 2012-02-08 21:34:53 +01:00