]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-sidebar-links.c
[dualscreen] fix crash on ctrl+w and fix control window closing
[evince.git] / shell / ev-sidebar-links.c
index 569fdd5161541eb5ec7010199645b31abb113eb7..28a4fddc66d2db03e7e5cbb19b000bde20dabbdc 100644 (file)
@@ -17,7 +17,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  */
 
 #ifdef HAVE_CONFIG_H
@@ -73,7 +73,7 @@ static void job_finished_callback                     (EvJobLinks     *job,
                                                         EvSidebarLinks *sidebar_links);
 static void ev_sidebar_links_set_current_page           (EvSidebarLinks *sidebar_links,
                                                         gint            current_page);
-static void ev_sidebar_links_page_iface_init           (EvSidebarPageIface *iface);
+static void ev_sidebar_links_page_iface_init           (EvSidebarPageInterface *iface);
 static gboolean ev_sidebar_links_support_document      (EvSidebarPage  *sidebar_page,
                                                         EvDocument     *document);
 static const gchar* ev_sidebar_links_get_label                 (EvSidebarPage *sidebar_page);
@@ -284,6 +284,7 @@ print_section_cb (GtkWidget *menuitem, EvSidebarLinks *sidebar)
        if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
                EvLink *link;
                int first_page, last_page = -1;
+               EvDocumentLinks *document_links;
 
                gtk_tree_model_get (model, &iter,
                                    EV_DOCUMENT_LINKS_COLUMN_LINK, &link,
@@ -292,7 +293,9 @@ print_section_cb (GtkWidget *menuitem, EvSidebarLinks *sidebar)
                if (!link)
                        return;
 
-               first_page = ev_link_get_page (link);
+               document_links = EV_DOCUMENT_LINKS (sidebar->priv->document);
+
+               first_page = ev_document_links_get_link_page (document_links, link);
                if (first_page == -1) {
                        g_object_unref (link);
                        return;
@@ -307,7 +310,7 @@ print_section_cb (GtkWidget *menuitem, EvSidebarLinks *sidebar)
                                            -1);
 
                        if (link) {
-                               last_page = ev_link_get_page (link);
+                               last_page = ev_document_links_get_link_page (document_links, link);;
                                g_object_unref (link);
                        }
                } else {
@@ -332,7 +335,7 @@ build_popup_menu (EvSidebarLinks *sidebar)
 
        menu = gtk_menu_new ();
        item = gtk_image_menu_item_new_from_stock (GTK_STOCK_PRINT, NULL);
-       gtk_label_set_label (GTK_LABEL (GTK_BIN (item)->child), _("Print…"));
+       gtk_label_set_label (GTK_LABEL (gtk_bin_get_child (GTK_BIN (item))), _("Print…"));
        gtk_widget_show (item);
        gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
        g_signal_connect (item, "activate",
@@ -432,7 +435,10 @@ ev_sidebar_links_construct (EvSidebarLinks *ev_sidebar_links)
        gtk_tree_view_column_set_attributes (GTK_TREE_VIEW_COLUMN (column), renderer,
                                             "text", EV_DOCUMENT_LINKS_COLUMN_PAGE_LABEL,
                                             NULL);
-       g_object_set (G_OBJECT (renderer), "style", PANGO_STYLE_ITALIC, NULL);
+       g_object_set (G_OBJECT (renderer),
+                      "style", PANGO_STYLE_ITALIC,
+                      "xalign", 1.0,
+                      NULL);
 
        g_signal_connect (priv->tree_view,
                          "button_press_event",
@@ -452,40 +458,6 @@ ev_sidebar_links_init (EvSidebarLinks *ev_sidebar_links)
        ev_sidebar_links_construct (ev_sidebar_links);
 }
 
-static gboolean
-fill_page_labels (GtkTreeModel *tree_model,
-                  GtkTreePath *path,
-                  GtkTreeIter *iter,
-                 EvSidebarLinks    *sidebar_links)
-{
-       EvLink *link;
-       gint page;
-       gchar *page_label;
-
-       gtk_tree_model_get (tree_model, iter,
-                           EV_DOCUMENT_LINKS_COLUMN_LINK, &link,
-                           -1);
-
-       if (!link)
-               return FALSE;
-
-       page = ev_link_get_page (link);
-
-       if (page < 0) 
-               return FALSE;
-       
-       page_label = ev_document_get_page_label (sidebar_links->priv->document,
-                                                page);
-       gtk_tree_store_set (GTK_TREE_STORE (tree_model), iter,
-                           EV_DOCUMENT_LINKS_COLUMN_PAGE_LABEL, page_label, 
-                           -1);
-
-       g_free (page_label);
-
-       g_object_unref (link);
-       return FALSE;
-}
-
 /* Public Functions */
 
 GtkWidget *
@@ -514,8 +486,9 @@ update_page_callback_foreach (GtkTreeModel *model,
        if (link) {
                int current_page;
                int dest_page;
+               EvDocumentLinks *document_links = EV_DOCUMENT_LINKS (sidebar_links->priv->document);
 
-               dest_page = ev_link_get_page (link);
+               dest_page = ev_document_links_get_link_page (document_links, link);
                g_object_unref (link);
                
                current_page = ev_document_model_get_page (sidebar_links->priv->doc_model);
@@ -555,8 +528,9 @@ ev_sidebar_links_set_current_page (EvSidebarLinks *sidebar_links,
                                    -1);
                if (link) {
                        gint dest_page;
+                       EvDocumentLinks *document_links = EV_DOCUMENT_LINKS (sidebar_links->priv->document);
 
-                       dest_page = ev_link_get_page (link);
+                       dest_page = ev_document_links_get_link_page (document_links, link);
                        g_object_unref (link);
                        
                        if (dest_page == current_page)
@@ -650,8 +624,6 @@ job_finished_callback (EvJobLinks     *job,
 
        ev_sidebar_links_set_links_model (sidebar_links, job->model);
 
-       gtk_tree_model_foreach (priv->model, (GtkTreeModelForeachFunc)fill_page_labels, sidebar_links);
-
        gtk_tree_view_set_model (GTK_TREE_VIEW (priv->tree_view), job->model);
        
        g_object_unref (job);
@@ -751,7 +723,7 @@ ev_sidebar_links_get_label (EvSidebarPage *sidebar_page)
 }
 
 static void
-ev_sidebar_links_page_iface_init (EvSidebarPageIface *iface)
+ev_sidebar_links_page_iface_init (EvSidebarPageInterface *iface)
 {
        iface->support_document = ev_sidebar_links_support_document;
        iface->set_model = ev_sidebar_links_set_model;