[epiphany] Fix: Pins don't stay on the left



commit abed379df2daac500fb190a6357149c0221497de
Author: Jan-Michael Brummer <jan brummer tabos org>
Date:   Tue May 28 21:05:05 2019 +0200

    Fix: Pins don't stay on the left
    
    Fixes: https://gitlab.gnome.org/GNOME/epiphany/issues/780

 src/ephy-notebook.h |  1 +
 src/ephy-window.c   | 16 ++++++++++++++--
 2 files changed, 15 insertions(+), 2 deletions(-)
---
diff --git a/src/ephy-notebook.h b/src/ephy-notebook.h
index a54b50f83..46af51464 100644
--- a/src/ephy-notebook.h
+++ b/src/ephy-notebook.h
@@ -56,4 +56,5 @@ void           ephy_notebook_tab_set_pinned    (EphyNotebook *notebook,
                                                 gboolean      is_pinned);
 gboolean       ephy_notebook_tab_is_pinned     (EphyNotebook *notebook,
                                                 EphyEmbed    *embed);
+
 G_END_DECLS
diff --git a/src/ephy-window.c b/src/ephy-window.c
index 0877a3881..ad4cb3be6 100644
--- a/src/ephy-window.c
+++ b/src/ephy-window.c
@@ -4223,13 +4223,25 @@ int
 ephy_window_get_position_for_new_embed (EphyWindow *window,
                                         EphyEmbed  *embed)
 {
-  GtkWidget *nb = ephy_window_get_notebook (window);
+  GtkWidget *notebook = ephy_window_get_notebook (window);
   int position;
 
   if (embed == window->last_opened_embed)
     return window->last_opened_pos++;
 
-  position = gtk_notebook_page_num (GTK_NOTEBOOK (nb), GTK_WIDGET (embed)) + 1;
+  position = gtk_notebook_page_num (GTK_NOTEBOOK (notebook), GTK_WIDGET (embed)) + 1;
+
+  /* Loop through all pages and skip all pinned tabs */
+  do {
+    GtkWidget *page;
+
+    page = gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), position);
+    if (!page)
+      break;
+
+    if (!ephy_notebook_tab_is_pinned (EPHY_NOTEBOOK (notebook), EPHY_EMBED (page)))
+      break;
+  } while (++position < gtk_notebook_get_n_pages (GTK_NOTEBOOK (notebook)));
 
   if (window->last_opened_embed)
     g_object_remove_weak_pointer (G_OBJECT (window->last_opened_embed), (gpointer 
*)&window->last_opened_embed);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]