[tepl] Tab: store the GtkScrolledWindow



commit 07a635cd0f9198556368aee5b94045edc9d1a80c
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Sun May 24 16:50:17 2020 +0200

    Tab: store the GtkScrolledWindow

 tepl/tepl-tab.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)
---
diff --git a/tepl/tepl-tab.c b/tepl/tepl-tab.c
index 17b062e..ad8e860 100644
--- a/tepl/tepl-tab.c
+++ b/tepl/tepl-tab.c
@@ -46,6 +46,7 @@
 
 struct _TeplTabPrivate
 {
+       GtkScrolledWindow *scrolled_window;
        TeplView *view;
        TeplGotoLineBar *goto_line_bar;
 };
@@ -103,15 +104,20 @@ static void
 tepl_tab_pack_view_default (TeplTab  *tab,
                            TeplView *view)
 {
-       GtkScrolledWindow *scrolled_window;
+       if (tab->priv->scrolled_window != NULL)
+       {
+               g_warning ("The TeplTab::pack_view virtual function can be called only once.");
+               return;
+       }
 
-       scrolled_window = create_scrolled_window ();
+       tab->priv->scrolled_window = create_scrolled_window ();
+       g_object_ref_sink (tab->priv->scrolled_window);
 
-       gtk_container_add (GTK_CONTAINER (scrolled_window),
+       gtk_container_add (GTK_CONTAINER (tab->priv->scrolled_window),
                           GTK_WIDGET (view));
 
        gtk_container_add (GTK_CONTAINER (tab),
-                          GTK_WIDGET (scrolled_window));
+                          GTK_WIDGET (tab->priv->scrolled_window));
 }
 
 static void
@@ -277,6 +283,7 @@ tepl_tab_dispose (GObject *object)
 {
        TeplTab *tab = TEPL_TAB (object);
 
+       g_clear_object (&tab->priv->scrolled_window);
        g_clear_object (&tab->priv->view);
        g_clear_object (&tab->priv->goto_line_bar);
 


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