X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-sidebar-thumbnails.c;h=01c996bb48f446413cbdbcfca69d711a829c84c7;hb=d47bc2205d248b34dbfcdd349473f54d45d5ec70;hp=6ed20a21753a020769684b7b6f654577ea50f6e0;hpb=9a1a3b315f05568f6e28f64f685338dc120d5491;p=evince.git diff --git a/shell/ev-sidebar-thumbnails.c b/shell/ev-sidebar-thumbnails.c index 6ed20a21..01c996bb 100644 --- a/shell/ev-sidebar-thumbnails.c +++ b/shell/ev-sidebar-thumbnails.c @@ -85,6 +85,7 @@ static void ev_sidebar_thumbnails_set_document (EvSidebarPage static const gchar* ev_sidebar_thumbnails_get_label (EvSidebarPage *sidebar_page); static void thumbnail_job_completed_callback (EvJobThumbnail *job, EvSidebarThumbnails *sidebar_thumbnails); +static void adjustment_changed_cb (EvSidebarThumbnails *sidebar_thumbnails); G_DEFINE_TYPE_EXTENDED (EvSidebarThumbnails, ev_sidebar_thumbnails, @@ -102,13 +103,13 @@ ev_sidebar_thumbnails_dispose (GObject *object) { EvSidebarThumbnails *sidebar_thumbnails = EV_SIDEBAR_THUMBNAILS (object); - ev_sidebar_thumbnails_clear_model (sidebar_thumbnails); if (sidebar_thumbnails->priv->loading_icon) { g_object_unref (sidebar_thumbnails->priv->loading_icon); sidebar_thumbnails->priv->loading_icon = NULL; } if (sidebar_thumbnails->priv->list_store) { + ev_sidebar_thumbnails_clear_model (sidebar_thumbnails); g_object_unref (sidebar_thumbnails->priv->list_store); sidebar_thumbnails->priv->list_store = NULL; } @@ -124,8 +125,7 @@ ev_sidebar_thumbnails_get_property (GObject *object, { EvSidebarThumbnails *sidebar = EV_SIDEBAR_THUMBNAILS (object); - switch (prop_id) - { + switch (prop_id) { case PROP_WIDGET: if (sidebar->priv->tree_view) g_value_set_object (value, sidebar->priv->tree_view); @@ -138,17 +138,32 @@ ev_sidebar_thumbnails_get_property (GObject *object, } } +static void +ev_sidebar_thumbnails_map (GtkWidget *widget) +{ + EvSidebarThumbnails *sidebar; + + sidebar = EV_SIDEBAR_THUMBNAILS (widget); + + GTK_WIDGET_CLASS (ev_sidebar_thumbnails_parent_class)->map (widget); + + adjustment_changed_cb (sidebar); +} + static void ev_sidebar_thumbnails_class_init (EvSidebarThumbnailsClass *ev_sidebar_thumbnails_class) { GObjectClass *g_object_class; GtkObjectClass *gtk_object_class; + GtkWidgetClass *widget_class; g_object_class = G_OBJECT_CLASS (ev_sidebar_thumbnails_class); gtk_object_class = GTK_OBJECT_CLASS (ev_sidebar_thumbnails_class); + widget_class = GTK_WIDGET_CLASS (ev_sidebar_thumbnails_class); g_object_class->dispose = ev_sidebar_thumbnails_dispose; g_object_class->get_property = ev_sidebar_thumbnails_get_property; + widget_class->map = ev_sidebar_thumbnails_map; g_object_class_override_property (g_object_class, PROP_WIDGET, @@ -290,6 +305,10 @@ adjustment_changed_cb (EvSidebarThumbnails *sidebar_thumbnails) gint wy1; gint wy2; + /* Widget is not currently visible */ + if (!GTK_WIDGET_MAPPED (sidebar_thumbnails)) + return; + if (priv->tree_view) { if (! GTK_WIDGET_REALIZED (priv->tree_view)) return; @@ -307,14 +326,10 @@ adjustment_changed_cb (EvSidebarThumbnails *sidebar_thumbnails) 1, wy2 -1, &path2, NULL, NULL, NULL); } else if (priv->icon_view) { -#ifdef HAVE_GTK_ICON_VIEW_GET_VISIBLE_RANGE if (! GTK_WIDGET_REALIZED (priv->icon_view)) return; if (! gtk_icon_view_get_visible_range (GTK_ICON_VIEW (priv->icon_view), &path, &path2)) return; -#else - g_assert_not_reached (); -#endif } else { return; } @@ -383,7 +398,6 @@ ev_sidebar_thumbnails_set_loading_icon (EvSidebarThumbnails *sidebar_thumbnails) } void ev_sidebar_thumbnails_refresh (EvSidebarThumbnails *sidebar_thumbnails, - int rotation) { sidebar_thumbnails->priv->rotation = rotation; @@ -495,14 +509,10 @@ ev_sidebar_init_icon_view (EvSidebarThumbnails *ev_sidebar_thumbnails) static gboolean ev_sidebar_thumbnails_use_icon_view (EvSidebarThumbnails *sidebar_thumbnails) { -#ifdef HAVE_GTK_ICON_VIEW_GET_VISIBLE_RANGE EvSidebarThumbnailsPrivate *priv = sidebar_thumbnails->priv; if (ev_page_cache_get_n_pages (priv->page_cache) > MAX_ICON_VIEW_PAGE_COUNT) return FALSE; return TRUE; -#else - return FALSE; -#endif } static void @@ -552,11 +562,8 @@ page_changed_cb (EvPageCache *page_cache, gtk_tree_view_set_cursor (tree_view, path, NULL, FALSE); gtk_tree_view_scroll_to_cell (tree_view, path, NULL, FALSE, 0.0, 0.0); } else if (sidebar->priv->icon_view) { - /* Guard against gtk-2.6 */ -#ifdef HAVE_GTK_ICON_VIEW_GET_VISIBLE_RANGE gtk_icon_view_select_path (GTK_ICON_VIEW (sidebar->priv->icon_view), path); gtk_icon_view_set_cursor (GTK_ICON_VIEW (sidebar->priv->icon_view), path, NULL, FALSE); -#endif } gtk_tree_path_free (path); @@ -607,6 +614,8 @@ ev_sidebar_thumbnails_set_document (EvSidebarPage *sidebar_page, if (! priv->icon_view) { ev_sidebar_init_icon_view (sidebar_thumbnails); g_object_notify (G_OBJECT (sidebar_thumbnails), "main_widget"); + } else { + gtk_widget_queue_resize (priv->icon_view); } } else { if (priv->icon_view) {