[gedit] Implement Move to New Tab Group



commit ff8a8a5b8cb8f2922bb6f9d228b8387105111fdb
Author: Ignacio Casal Quinteiro <ignacio casal nice-software com>
Date:   Fri Oct 18 12:03:08 2013 +0200

    Implement Move to New Tab Group

 gedit/gedit-multi-notebook.c      |   34 ++++++++++++++++++++++++++++++++++
 gedit/gedit-multi-notebook.h      |    3 +++
 gedit/gedit-notebook-popup-menu.c |   15 +++++++++++++++
 gedit/gedit-window.c              |   11 +++++++++++
 gedit/gedit-window.h              |    2 ++
 5 files changed, 65 insertions(+), 0 deletions(-)
---
diff --git a/gedit/gedit-multi-notebook.c b/gedit/gedit-multi-notebook.c
index 3e36c70..b8922e5 100644
--- a/gedit/gedit-multi-notebook.c
+++ b/gedit/gedit-multi-notebook.c
@@ -835,6 +835,40 @@ gedit_multi_notebook_add_new_notebook (GeditMultiNotebook *mnb)
 }
 
 void
+gedit_multi_notebook_add_new_notebook_with_tab (GeditMultiNotebook *mnb,
+                                                GeditTab           *tab)
+{
+       GtkWidget *notebook;
+       gint page_num;
+       GList *l;
+
+       g_return_if_fail (GEDIT_IS_MULTI_NOTEBOOK (mnb));
+       g_return_if_fail (GEDIT_IS_TAB (tab));
+
+       notebook = gedit_notebook_new ();
+       add_notebook (mnb, notebook, FALSE);
+
+       l = mnb->priv->notebooks;
+
+       do
+       {
+               page_num = gtk_notebook_page_num (GTK_NOTEBOOK (l->data),
+                                                 GTK_WIDGET (tab));
+               if (page_num != -1)
+                       break;
+
+               l = g_list_next (l);
+       } while (l != NULL && page_num == -1);
+
+       g_return_if_fail (page_num != -1);
+
+       gedit_notebook_move_tab (GEDIT_NOTEBOOK (l->data),
+                                GEDIT_NOTEBOOK (notebook),
+                                tab,
+                                -1);
+}
+
+void
 gedit_multi_notebook_remove_active_notebook (GeditMultiNotebook *mnb)
 {
        g_return_if_fail (GEDIT_IS_MULTI_NOTEBOOK (mnb));
diff --git a/gedit/gedit-multi-notebook.h b/gedit/gedit-multi-notebook.h
index 28db090..faa92b0 100644
--- a/gedit/gedit-multi-notebook.h
+++ b/gedit/gedit-multi-notebook.h
@@ -119,6 +119,9 @@ void                         gedit_multi_notebook_close_all_tabs            
(GeditMultiNotebook *mnb);
 
 void                    gedit_multi_notebook_add_new_notebook          (GeditMultiNotebook *mnb);
 
+void                    gedit_multi_notebook_add_new_notebook_with_tab (GeditMultiNotebook *mnb,
+                                                                         GeditTab           *tab);
+
 void                    gedit_multi_notebook_remove_active_notebook    (GeditMultiNotebook *mnb);
 
 void                    gedit_multi_notebook_previous_notebook         (GeditMultiNotebook *mnb);
diff --git a/gedit/gedit-notebook-popup-menu.c b/gedit/gedit-notebook-popup-menu.c
index 634588a..c188cfa 100644
--- a/gedit/gedit-notebook-popup-menu.c
+++ b/gedit/gedit-notebook-popup-menu.c
@@ -129,6 +129,14 @@ on_move_to_new_window_menuitem_activate (GtkMenuItem            *menuitem,
 }
 
 static void
+on_move_to_new_tab_group_menuitem_activate (GtkMenuItem            *menuitem,
+                                            GeditNotebookPopupMenu *menu)
+{
+       _gedit_window_move_tab_to_new_tab_group (menu->priv->window,
+                                                menu->priv->tab);
+}
+
+static void
 on_file_save_menuitem_activate (GtkMenuItem            *menuitem,
                                 GeditNotebookPopupMenu *menu)
 {
@@ -171,6 +179,13 @@ gedit_notebook_popup_menu_init (GeditNotebookPopupMenu *menu)
        gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
        gtk_widget_show (menu_item);
 
+       menu_item = gtk_menu_item_new_with_mnemonic (_("_Move to New Tab Group"));
+       g_signal_connect (menu_item, "activate",
+                         G_CALLBACK (on_move_to_new_tab_group_menuitem_activate),
+                         menu);
+       gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
+       gtk_widget_show (menu_item);
+
        menu_item = gtk_separator_menu_item_new ();
        gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
        gtk_widget_show (menu_item);
diff --git a/gedit/gedit-window.c b/gedit/gedit-window.c
index 142a97f..7b20183 100644
--- a/gedit/gedit-window.c
+++ b/gedit/gedit-window.c
@@ -4268,6 +4268,17 @@ _gedit_window_move_tab_to_new_window (GeditWindow *window,
        return new_window;
 }
 
+void
+_gedit_window_move_tab_to_new_tab_group (GeditWindow *window,
+                                         GeditTab    *tab)
+{
+       g_return_if_fail (GEDIT_IS_WINDOW (window));
+       g_return_if_fail (GEDIT_IS_TAB (tab));
+
+       gedit_multi_notebook_add_new_notebook_with_tab (window->priv->multi_notebook,
+                                                       tab);
+}
+
 /**
  * gedit_window_set_active_tab:
  * @window: a #GeditWindow
diff --git a/gedit/gedit-window.h b/gedit/gedit-window.h
index 391ce9f..9ed77dd 100644
--- a/gedit/gedit-window.h
+++ b/gedit/gedit-window.h
@@ -158,6 +158,8 @@ GtkWidget   *_gedit_window_get_notebook             (GeditWindow         *window);
 
 GeditWindow    *_gedit_window_move_tab_to_new_window   (GeditWindow         *window,
                                                         GeditTab            *tab);
+void             _gedit_window_move_tab_to_new_tab_group(GeditWindow         *window,
+                                                         GeditTab            *tab);
 gboolean        _gedit_window_is_removing_tabs         (GeditWindow         *window);
 
 GFile          *_gedit_window_get_default_location     (GeditWindow         *window);


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