Quick patch to center-align pages that have different sizes.
Also fixes a bug that forces all the ZathuraPages to the size of the
largest one, therefore causing GTK's default background color to be
drawn instead of the one set in zathurarc.

This feels kind of hacky, though. In the long term, it might be better
to manually draw the whole content area, rather than relying on Gtk's
layout containers.
diff --git a/zathura.c b/zathura.c
index 1f5f4fd..5335def 100644
--- a/zathura.c
+++ b/zathura.c
@@ -943,10 +943,6 @@ document_close(zathura_t* zathura, bool keep_monitor)
 
   /* remove widgets */
   gtk_container_foreach(GTK_CONTAINER(zathura->ui.page_widget), 
remove_page_from_table, (gpointer) 1);
-  for (unsigned int i = 0; i < 
zathura_document_get_number_of_pages(zathura->document); i++) {
-    g_object_unref(zathura->pages[i]);
-    g_object_unref(zathura->pages[i]); // FIXME
-  }
   free(zathura->pages);
   zathura->pages = NULL;
 
@@ -1062,9 +1058,15 @@ page_widget_set_mode(zathura_t* zathura, unsigned int 
page_padding,
     int x = (i + first_page_column - 1) % pages_per_row;
     int y = (i + first_page_column - 1) / pages_per_row;
 
-    zathura_page_t* page   = zathura_document_get_page(zathura->document, i);
-    GtkWidget* page_widget = zathura_page_get_widget(zathura, page);
-    gtk_grid_attach(GTK_GRID(zathura->ui.page_widget), page_widget, x, y, 1, 
1);
+    GtkWidget* page_widget = zathura->pages[i];
+
+    GtkWidget* align = gtk_alignment_new(0.5, 0.5, 0, 0);
+    if (gtk_widget_get_parent(page_widget))
+      gtk_widget_reparent(page_widget, align);
+    else
+      gtk_container_add(GTK_CONTAINER(align), page_widget);
+
+    gtk_grid_attach(GTK_GRID(zathura->ui.page_widget), align, x, y, 1, 1);
   }
 
   gtk_widget_show_all(zathura->ui.page_widget);
_______________________________________________
zathura mailing list
zathura@lists.pwmt.org
http://lists.pwmt.org/mailman/listinfo/zathura

Reply via email to