Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorNickolay V. Shmyrev <nshmyrev@src.gnome.org>2005-12-28 13:37:40 (GMT)
committer Nickolay V. Shmyrev <nshmyrev@src.gnome.org>2005-12-28 13:37:40 (GMT)
commit47565f7ff3bbb1d56e2a7851c44ae10981c229ac (patch)
treedb35d58c08ad06a17ba9fd8b3bbfc6d38d7d5d4a /shell
parent2b997472b125397a3cd96a66153b7ea94966fc63 (diff)
Fix for the bug #325067 with more intelligent selection of current link in
* backend/ev-link.c: (ev_link_get_page), (ev_link_init): * shell/ev-page-action.c: (build_new_tree_cb): * shell/ev-sidebar-links.c: (links_page_num_func), (update_page_callback_foreach), (update_page_callback): * shell/ev-view.c: (scroll_to_current_page): Fix for the bug #325067 with more intelligent selection of current link in sidebar. Make sidebar handle links of FITR-like type more correctly. * dvi/pixbuf-device.c: (dvi_pixbuf_draw_rule), (dvi_pixbuf_put_pixel): Fix memory consumtion with disabled alpha channel.
Diffstat (limited to 'shell')
-rw-r--r--shell/ev-page-action.c2
-rw-r--r--shell/ev-sidebar-links.c39
-rw-r--r--shell/ev-view.c2
3 files changed, 29 insertions, 14 deletions
diff --git a/shell/ev-page-action.c b/shell/ev-page-action.c
index 73152b4..fc81cb7 100644
--- a/shell/ev-page-action.c
+++ b/shell/ev-page-action.c
@@ -298,7 +298,7 @@ build_new_tree_cb (GtkTreeModel *model,
EV_DOCUMENT_LINKS_COLUMN_LINK, &link,
-1);
- if (link && ev_link_get_link_type (link) == EV_LINK_TYPE_PAGE) {
+ if (link && ev_link_get_page (link) >= 0) {
GtkTreeIter filter_iter;
gtk_list_store_append (GTK_LIST_STORE (filter_model), &filter_iter);
diff --git a/shell/ev-sidebar-links.c b/shell/ev-sidebar-links.c
index 4107063..60d4134 100644
--- a/shell/ev-sidebar-links.c
+++ b/shell/ev-sidebar-links.c
@@ -446,7 +446,7 @@ links_page_num_func (GtkTreeViewColumn *tree_column,
-1);
if (link != NULL &&
- ev_link_get_link_type (link) == EV_LINK_TYPE_PAGE) {
+ ev_link_get_page (link) >= 0) {
gchar *page_label;
gchar *page_string;
@@ -495,7 +495,7 @@ update_page_callback_foreach (GtkTreeModel *model,
EV_DOCUMENT_LINKS_COLUMN_LINK, &link,
-1);
- if (link && ev_link_get_link_type (link) == EV_LINK_TYPE_PAGE) {
+ if (link) {
int current_page;
current_page = ev_page_cache_get_current_page (sidebar_links->priv->page_cache);
@@ -503,17 +503,14 @@ update_page_callback_foreach (GtkTreeModel *model,
GtkTreeSelection *selection;
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (sidebar_links->priv->tree_view));
-
gtk_tree_selection_select_path (selection, path);
-
g_object_unref (link);
+
return TRUE;
}
+ g_object_unref (link);
}
- if (link)
- g_object_unref (link);
-
return FALSE;
}
@@ -523,19 +520,37 @@ update_page_callback (EvPageCache *page_cache,
EvSidebarLinks *sidebar_links)
{
GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (sidebar_links->priv->tree_view));
+
+ if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
+ EvLink *link;
+
+ gtk_tree_model_get (model, &iter,
+ EV_DOCUMENT_LINKS_COLUMN_LINK, &link,
+ -1);
+ if (link) {
+ gint current_page;
+ current_page = ev_page_cache_get_current_page (sidebar_links->priv->page_cache);
+ if (ev_link_get_page (link) == current_page) {
+ g_object_unref (link);
+ return;
+ }
+ g_object_unref (link);
+ }
+ }
+
/* We go through the tree linearly looking for the first page that
* matches. This is pretty inefficient. We can do something neat with
* a GtkTreeModelSort here to make it faster, if it turns out to be
* slow.
*/
-
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (sidebar_links->priv->tree_view));
-
g_signal_handler_block (selection, sidebar_links->priv->selection_id);
g_signal_handler_block (sidebar_links->priv->tree_view, sidebar_links->priv->row_activated_id);
- gtk_tree_selection_unselect_all (selection);
- gtk_tree_model_foreach (sidebar_links->priv->model,
+ gtk_tree_model_foreach (model,
update_page_callback_foreach,
sidebar_links);
diff --git a/shell/ev-view.c b/shell/ev-view.c
index b1e9733..f0a371c 100644
--- a/shell/ev-view.c
+++ b/shell/ev-view.c
@@ -329,7 +329,7 @@ scroll_to_current_page (EvView *view, GtkOrientation orientation)
if (orientation == GTK_ORIENTATION_VERTICAL) {
if (view->continuous) {
gtk_adjustment_clamp_page (view->vadjustment,
- view_point.y - view->spacing,
+ view_point.y - view->spacing / 2,
view_point.y + view->vadjustment->page_size);
} else {
gtk_adjustment_set_value (view->vadjustment,