[gedit] Don't update sensitivity on wrong tab when a tab is removed



commit a41925a91d6ccb2d4f874cfe0ac1ca7b9d021102
Author: Sebastien Lafargue <slafargue src gnome org>
Date:   Fri Mar 14 12:58:56 2014 +0100

    Don't update sensitivity on wrong tab when a tab is removed
    
    When a tab is removed, sensitivity is updated on the active tab
    but at this time, the active tab is the removed tab, so we end with this :
    
    CRITICAL **: update_next_prev_doc_sensitivity: assertion 'tab_number >= 0' failed
    
    ( searching a tab who is not in the active notebook return a tab_number of -1 )

 gedit/gedit-multi-notebook.c |    9 ++++++++-
 gedit/gedit-window.c         |    3 +++
 2 files changed, 11 insertions(+), 1 deletions(-)
---
diff --git a/gedit/gedit-multi-notebook.c b/gedit/gedit-multi-notebook.c
index 178787d..00d81bb 100644
--- a/gedit/gedit-multi-notebook.c
+++ b/gedit/gedit-multi-notebook.c
@@ -814,7 +814,14 @@ gedit_multi_notebook_set_active_tab (GeditMultiNotebook *mnb,
        gint page_num;
 
        g_return_if_fail (GEDIT_IS_MULTI_NOTEBOOK (mnb));
-       g_return_if_fail (GEDIT_IS_TAB (tab));
+       g_return_if_fail (GEDIT_IS_TAB (tab) || tab == NULL);
+
+       if (tab == NULL)
+       {
+               mnb->priv->active_tab = NULL;
+
+               return;
+       }
 
        if (tab == GEDIT_TAB (mnb->priv->active_tab))
                return;
diff --git a/gedit/gedit-window.c b/gedit/gedit-window.c
index bf7f25b..5701ca6 100644
--- a/gedit/gedit-window.c
+++ b/gedit/gedit-window.c
@@ -456,6 +456,7 @@ update_next_prev_doc_sensitivity_per_window (GeditWindow *window)
        gedit_debug (DEBUG_WINDOW);
 
        tab = gedit_window_get_active_tab (window);
+
        if (tab != NULL)
        {
                update_next_prev_doc_sensitivity (window, tab);
@@ -2209,6 +2210,8 @@ on_tab_removed (GeditMultiNotebook *multi,
                        g_signal_handler_disconnect (doc, window->priv->language_changed_id);
                        window->priv->language_changed_id = 0;
                }
+
+               gedit_multi_notebook_set_active_tab (multi, NULL);
        }
 
        g_return_if_fail (num_tabs >= 0);


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