Commit graph

33 commits

Author SHA1 Message Date
Abdo Roig-Maranges
3634636227 adapt view_adjustment callbacks to new document/view separation
The adjustment callbacks act as an interface between position data in
the document object, and the adjustments.

We remove the horizontal centering code, as now it is done by
position_set. Those callbacks should not change the position read from
the document object in any way.

Also, we split the adjustment_value_changed callback into a vertical and
an horizontal version. Previously a single callback was reused for both,
horizontal and vertical. That lead to a subtle problem when coming out
of index mode. What happened was the following:

  1. horizontal adjustment bounds change coming out of index mode. This
     triggers an hadjustment changed signal.

  2. the hadjustment_changed callback handles it, and resets the
     hadjustment value, as the bound may have changed. This triggers a
     value_changed event.

  3. the value_changed callback handles the event, and captures the
     position for *BOTH*, horizontal and vertical adjustments, saving
     them to the document object.

  1..3 is repeated for the vertical adjustment.

  Now, if in 3. the horizontal adjustment bounds were not yet updated
  after the index mode, we got ourselves at the wrong vertical position.

This race condition is avoided now because both value_changed callbacks
*ONLY* handle their own direction, either vertical or horizontal, not
 both.
2013-10-26 17:13:56 +02:00
Abdo Roig-Maranges
692e72abd4 add a custom refresh-view signal
Now we can trigger a gtk page refresh calling refresh_view. This
function triggers a custom signal refresh-view, whose handler copies the
position from the document object to the adjustments.
2013-10-26 17:13:56 +02:00
Abdo Roig-Maranges
0da491f78b merge callbacks for pages-per-row, first-page-column and page-padding
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.
2013-10-26 16:02:21 +02:00
Sebastian Ramacher
2ad2b9e0c4 Use signals for selected images and text
The page widget shouldn't have to care what should be done with selected images
and text.

Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
2013-08-31 13:12:41 +02: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
Benoît Knecht
2192b7172c Add new shortcut function to display links
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>
2012-12-07 18:05:59 +01:00
Abdó Roig-Maranges
c57463a053 Added option to recolor keeping hues of original color.
If option recolor-keephue is true, the recoloring algorithm
only adjusts the lightness of the original color, keeping the
rest of the properties close to the original.

When recolor-keephue is set to false, the recoloring is performed
as it was before, interpolating linearly between recolor-lightcolor
and recolor-darkcolor except for a different weighting for the
lightness which is closer to perception.

Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
2012-08-01 16:05:31 +02:00
Sebastian Ramacher
6d462f4732 Implement first-page-column.
Thanks to J. Commelin for the patch.
2012-06-27 22:34:16 +02:00
Moritz Lipp
800d039293 Check for numeric events 2012-05-01 19:09:33 +02:00
Moritz Lipp
2f4076ccca Use internal.h for internal types 2012-03-27 13:34:31 +02:00
Moritz Lipp
9265c9473a Add 'recolor' setting 2012-03-14 17:33:35 +01:00
Moritz Lipp
593d8063fe Close open document in cb_destroy 2012-03-07 01:11:18 +01:00
Moritz Lipp
851ef7cd7b Adjust on resize / Adjust on open 2012-02-09 01:46:51 +01:00
Moritz Lipp
1d606ef027 Ask for password if file is encrypted 2012-02-08 23:21:27 +01:00
Moritz Lipp
34b6fffc33 Update documentation 2012-02-08 15:30:13 +01:00
Moritz Lipp
2669ed43a8 Renamed buffer_changed function 2012-02-08 15:19:51 +01:00
Moritz Lipp
30f62a1f3a Implemented auto reload basics 2012-02-07 19:25:47 +01:00
Moritz Lipp
3547f80af9 Follow links with sc_follow 2012-02-07 17:31:47 +01:00
Sebastian Ramacher
2cb31a61ea reuse GIRARA_UNUSED 2011-12-09 14:50:35 +01:00
Sebastian Ramacher
f8f48dcc7d adopt to latest girara changes 2011-11-20 11:32:34 +01:00
Sebastian Ramacher
911d84c908 update includes due to girara restructuring 2011-10-23 17:01:15 +02:00
Moritz Lipp
05311ca020 Implemented sc_navigate_index 2011-09-29 18:17:03 +02:00
Moritz Lipp
a94cc260a2 Implemented cb_index_row_activated 2011-09-29 17:06:51 +02:00
Pavel Borzenkov
32d90379bc Allow changing of "pages-per-row" variable at runtime 2011-07-21 14:47:24 +02:00
Moritz Lipp
ccfe1d9fba Added some function comments 2011-02-01 22:56:43 +08:00
Moritz Lipp
0398692705 Detect which page should be rendered 2010-12-29 11:46:13 +01:00
Moritz Lipp
14d744befe [testing] Use GdkPixbuf instead of cairo 2010-12-27 09:07:17 +01:00
Moritz Lipp
ca35db2dc9 Added drawing area 2010-12-26 01:52:17 +01:00
Moritz Lipp
ade141aadc Update buffer in the statusbar 2010-11-13 12:40:48 +01:00
Moritz Lipp
98d42ed3ce Begin to test config structure 2010-11-12 13:48:18 +01:00
Moritz Lipp
6046fc71fb Include guards and shortcut definitions 2010-11-10 20:47:53 +01:00
Moritz Lipp
d51bd2bbe6 Updated file structure 2010-11-10 20:31:15 +01:00
Moritz Lipp
38ec3eea66 New file structure 2010-11-10 19:18:01 +01:00