[tepl] WindowActionsEdit: have a struct



commit 7d4a046bfc4eb8be0bac9d436417c4b8616fff0f
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Mon May 4 02:14:09 2020 +0200

    WindowActionsEdit: have a struct

 tepl/tepl-application-window.c  |  8 +++++++-
 tepl/tepl-window-actions-edit.c | 36 +++++++++++++++++++++++++++++++++---
 tepl/tepl-window-actions-edit.h |  7 ++++++-
 3 files changed, 46 insertions(+), 5 deletions(-)
---
diff --git a/tepl/tepl-application-window.c b/tepl/tepl-application-window.c
index 55dabc6..22e4435 100644
--- a/tepl/tepl-application-window.c
+++ b/tepl/tepl-application-window.c
@@ -81,6 +81,8 @@ struct _TeplApplicationWindowPrivate
 {
        GtkApplicationWindow *gtk_window;
 
+       TeplWindowActionsEdit *window_actions_edit;
+
        GtkWindowGroup *window_group;
 
        TeplTabGroup *tab_group;
@@ -412,7 +414,9 @@ add_actions (TeplApplicationWindow *tepl_window)
                                                       tepl_window);
 
        _tepl_window_actions_file_add_actions (tepl_window);
-       _tepl_window_actions_edit_add_actions (tepl_window);
+
+       g_assert (tepl_window->priv->window_actions_edit == NULL);
+       tepl_window->priv->window_actions_edit = _tepl_window_actions_edit_new (tepl_window);
 
        update_actions_sensitivity (tepl_window);
 }
@@ -579,6 +583,8 @@ tepl_application_window_dispose (GObject *object)
 
        tepl_window->priv->gtk_window = NULL;
 
+       _tepl_window_actions_edit_clear (&tepl_window->priv->window_actions_edit);
+
        g_clear_object (&tepl_window->priv->window_group);
 
        g_clear_object (&tepl_window->priv->tab_group);
diff --git a/tepl/tepl-window-actions-edit.c b/tepl/tepl-window-actions-edit.c
index ec81566..7aa55c7 100644
--- a/tepl/tepl-window-actions-edit.c
+++ b/tepl/tepl-window-actions-edit.c
@@ -9,6 +9,11 @@
 
 /* TeplApplicationWindow GActions for the Edit menu. */
 
+struct _TeplWindowActionsEdit
+{
+       gint something;
+};
+
 static void
 undo_activate_cb (GSimpleAction *action,
                  GVariant      *parameter,
@@ -177,10 +182,11 @@ unindent_activate_cb (GSimpleAction *action,
        }
 }
 
-void
-_tepl_window_actions_edit_add_actions (TeplApplicationWindow *tepl_window)
+TeplWindowActionsEdit *
+_tepl_window_actions_edit_new (TeplApplicationWindow *tepl_window)
 {
        GtkApplicationWindow *gtk_window;
+       TeplWindowActionsEdit *window_actions_edit;
 
        const GActionEntry entries[] = {
                { "tepl-undo", undo_activate_cb },
@@ -194,11 +200,35 @@ _tepl_window_actions_edit_add_actions (TeplApplicationWindow *tepl_window)
                { "tepl-unindent", unindent_activate_cb },
        };
 
-       g_return_if_fail (TEPL_IS_APPLICATION_WINDOW (tepl_window));
+       g_return_val_if_fail (TEPL_IS_APPLICATION_WINDOW (tepl_window), NULL);
 
        gtk_window = tepl_application_window_get_application_window (tepl_window);
        amtk_action_map_add_action_entries_check_dups (G_ACTION_MAP (gtk_window),
                                                       entries,
                                                       G_N_ELEMENTS (entries),
                                                       tepl_window);
+
+       window_actions_edit = g_new0 (TeplWindowActionsEdit, 1);
+
+       return window_actions_edit;
+}
+
+static void
+window_actions_edit_free (TeplWindowActionsEdit *window_actions_edit)
+{
+       if (window_actions_edit == NULL)
+       {
+               return;
+       }
+
+       g_free (window_actions_edit);
+}
+
+void
+_tepl_window_actions_edit_clear (TeplWindowActionsEdit **window_actions_edit_p)
+{
+       g_return_if_fail (window_actions_edit_p != NULL);
+
+       window_actions_edit_free (*window_actions_edit_p);
+       *window_actions_edit_p = NULL;
 }
diff --git a/tepl/tepl-window-actions-edit.h b/tepl/tepl-window-actions-edit.h
index fb3ec6a..de42db5 100644
--- a/tepl/tepl-window-actions-edit.h
+++ b/tepl/tepl-window-actions-edit.h
@@ -9,8 +9,13 @@
 
 G_BEGIN_DECLS
 
+typedef struct _TeplWindowActionsEdit TeplWindowActionsEdit;
+
+G_GNUC_INTERNAL
+TeplWindowActionsEdit *        _tepl_window_actions_edit_new   (TeplApplicationWindow *tepl_window);
+
 G_GNUC_INTERNAL
-void   _tepl_window_actions_edit_add_actions   (TeplApplicationWindow *tepl_window);
+void                   _tepl_window_actions_edit_clear (TeplWindowActionsEdit **window_actions_edit_p);
 
 G_END_DECLS
 


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