summaryrefslogtreecommitdiff
path: root/shell/ev-sidebar-thumbnails.c
diff options
context:
space:
mode:
Diffstat (limited to 'shell/ev-sidebar-thumbnails.c')
-rw-r--r--shell/ev-sidebar-thumbnails.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/shell/ev-sidebar-thumbnails.c b/shell/ev-sidebar-thumbnails.c
index 20243e5b..3d17d692 100644
--- a/shell/ev-sidebar-thumbnails.c
+++ b/shell/ev-sidebar-thumbnails.c
@@ -301,6 +301,23 @@ ev_sidebar_thumbnails_map (GtkWidget *widget)
}
static void
+ev_sidebar_fullscreen_cb (EvSidebarThumbnails *sidebar)
+{
+ /* After activating or deactivating fullscreen mode, the sidebar
+ * window is automatically moved to its start, while scroll bar
+ * stays in its original position.
+ *
+ * The sidebar window move is unwanted and unsolicited, and it's
+ * most probably caused by GtkIconView or GtkScrolledWindow bug.
+ *
+ * Workaround this by having the sidebar sync its window with the
+ * current scroll position after a fullscreen operation, do that by
+ * just emitting a "value-changed" on the current scroll adjustment.
+ * Fixes https://bugzilla.gnome.org/show_bug.cgi?id=783404 */
+ g_signal_emit_by_name (sidebar->priv->vadjustment, "value-changed");
+}
+
+static void
ev_sidebar_thumbnails_class_init (EvSidebarThumbnailsClass *ev_sidebar_thumbnails_class)
{
GObjectClass *g_object_class;
@@ -955,6 +972,9 @@ ev_sidebar_thumbnails_document_changed_cb (EvDocumentModel *model,
g_signal_connect (priv->model, "notify::inverted-colors",
G_CALLBACK (ev_sidebar_thumbnails_inverted_colors_changed_cb),
sidebar_thumbnails);
+ g_signal_connect_swapped (priv->model, "notify::fullscreen",
+ G_CALLBACK (ev_sidebar_fullscreen_cb),
+ sidebar_thumbnails);
sidebar_thumbnails->priv->start_page = -1;
sidebar_thumbnails->priv->end_page = -1;
ev_sidebar_thumbnails_set_current_page (sidebar_thumbnails,