[tepl] Tab saving: move public tepl_tab saving functions to tepl-tab-saving



commit 2ab2c1192e7014f0f77ef0298ac345c3821a3c1d
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Sun May 24 14:36:30 2020 +0200

    Tab saving: move public tepl_tab saving functions to tepl-tab-saving
    
    To have fewer lines of code in TeplTab.
    
    _tepl_tab_saving_save_async_simple() was dead code.

 tepl/meson.build                        |   4 +-
 tepl/tepl-close-confirm-dialog-single.c |   1 +
 tepl/tepl-tab-saving.c                  | 241 +++++++++++++++++++++++++++++--
 tepl/tepl-tab-saving.h                  |  37 ++++-
 tepl/tepl-tab.c                         | 248 --------------------------------
 tepl/tepl-tab.h                         |  24 ----
 tepl/tepl-window-actions-file.c         |   1 +
 tepl/tepl.h                             |   1 +
 8 files changed, 264 insertions(+), 293 deletions(-)
---
diff --git a/tepl/meson.build b/tepl/meson.build
index fdd8dfa..6a9c8ae 100644
--- a/tepl/meson.build
+++ b/tepl/meson.build
@@ -26,6 +26,7 @@ tepl_public_headers = [
   'tepl-tab-group.h',
   'tepl-tab-label.h',
   'tepl-tab-loading.h',
+  'tepl-tab-saving.h',
   'tepl-utils.h',
   'tepl-view.h'
 ]
@@ -56,6 +57,7 @@ tepl_public_c_files = [
   'tepl-tab-group.c',
   'tepl-tab-label.c',
   'tepl-tab-loading.c',
+  'tepl-tab-saving.c',
   'tepl-utils.c',
   'tepl-view.c'
 ]
@@ -67,7 +69,6 @@ TEPL_PRIVATE_HEADERS = [
   'tepl-metadata-parser.h',
   'tepl-progress-info-bar.h',
   'tepl-signal-group.h',
-  'tepl-tab-saving.h',
   'tepl-window-actions-edit.h',
   'tepl-window-actions-file.h',
   'tepl-window-actions-search.h'
@@ -80,7 +81,6 @@ tepl_private_c_files = [
   'tepl-metadata-parser.c',
   'tepl-progress-info-bar.c',
   'tepl-signal-group.c',
-  'tepl-tab-saving.c',
   'tepl-window-actions-edit.c',
   'tepl-window-actions-file.c',
   'tepl-window-actions-search.c'
diff --git a/tepl/tepl-close-confirm-dialog-single.c b/tepl/tepl-close-confirm-dialog-single.c
index 7aeb0e7..9c6e18b 100644
--- a/tepl/tepl-close-confirm-dialog-single.c
+++ b/tepl/tepl-close-confirm-dialog-single.c
@@ -7,6 +7,7 @@
 #include <glib/gi18n-lib.h>
 #include "tepl-buffer.h"
 #include "tepl-file.h"
+#include "tepl-tab-saving.h"
 #include "tepl-utils.h"
 
 #define CAN_CLOSE (TRUE)
diff --git a/tepl/tepl-tab-saving.c b/tepl/tepl-tab-saving.c
index 3cce02f..eb44b4c 100644
--- a/tepl/tepl-tab-saving.c
+++ b/tepl/tepl-tab-saving.c
@@ -1,4 +1,4 @@
-/* SPDX-FileCopyrightText: 2017 - Sébastien Wilmet <swilmet gnome org>
+/* SPDX-FileCopyrightText: 2017-2020 - Sébastien Wilmet <swilmet gnome org>
  * SPDX-License-Identifier: LGPL-3.0-or-later
  */
 
@@ -7,6 +7,7 @@
 #include <glib/gi18n-lib.h>
 #include "tepl-file.h"
 #include "tepl-info-bar.h"
+#include "tepl-utils.h"
 
 /* The functions in this file permits to run a TeplFileSaver, shows
  * TeplInfoBar's, until the operation is successful or if there is an
@@ -109,6 +110,59 @@ _tepl_tab_saving_save_finish (TeplTab      *tab,
        return g_task_propagate_boolean (G_TASK (result), NULL);
 }
 
+/**
+ * tepl_tab_save_async:
+ * @tab: a #TeplTab.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is
+ *   satisfied.
+ * @user_data: user data to pass to @callback.
+ *
+ * Saves asynchronously the content of the @tab. The #TeplFile:location must not
+ * be %NULL.
+ *
+ * See the #GAsyncResult documentation to know how to use this function.
+ *
+ * Since: 4.0
+ */
+void
+tepl_tab_save_async (TeplTab             *tab,
+                    GAsyncReadyCallback  callback,
+                    gpointer             user_data)
+{
+       TeplBuffer *buffer;
+       TeplFile *file;
+       GFile *location;
+       TeplFileSaver *saver;
+
+       g_return_if_fail (TEPL_IS_TAB (tab));
+
+       buffer = tepl_tab_get_buffer (tab);
+       file = tepl_buffer_get_file (buffer);
+       location = tepl_file_get_location (file);
+       g_return_if_fail (location != NULL);
+
+       saver = tepl_file_saver_new (buffer, file);
+       _tepl_tab_saving_save_async (tab, saver, callback, user_data);
+       g_object_unref (saver);
+}
+
+/**
+ * tepl_tab_save_finish:
+ * @tab: a #TeplTab.
+ * @result: a #GAsyncResult.
+ *
+ * Finishes a tab saving started with tepl_tab_save_async().
+ *
+ * Returns: whether the tab was saved successfully.
+ * Since: 4.0
+ */
+gboolean
+tepl_tab_save_finish (TeplTab      *tab,
+                     GAsyncResult *result)
+{
+       return _tepl_tab_saving_save_finish (tab, result);
+}
+
 static void
 save_async_simple_cb (GObject      *source_object,
                      GAsyncResult *result,
@@ -116,24 +170,187 @@ save_async_simple_cb (GObject      *source_object,
 {
        TeplTab *tab = TEPL_TAB (source_object);
 
-       _tepl_tab_saving_save_finish (tab, result);
+       tepl_tab_save_finish (tab, result);
        g_object_unref (tab);
 }
 
-/* Useful when we don't care about:
- * - when the operation is finished.
- * - the result.
+/**
+ * tepl_tab_save_async_simple:
+ * @tab: a #TeplTab.
+ *
+ * The same as tepl_tab_save_async(), but without callback.
+ *
+ * This function is useful when you don't need to know:
+ * - when the operation is finished;
+ * - and whether the operation ran successfully.
+ *
+ * Since: 4.0
  */
 void
-_tepl_tab_saving_save_async_simple (TeplTab       *tab,
-                                   TeplFileSaver *saver)
+tepl_tab_save_async_simple (TeplTab *tab)
+{
+       g_return_if_fail (TEPL_IS_TAB (tab));
+
+       g_object_ref (tab);
+       tepl_tab_save_async (tab,
+                            save_async_simple_cb,
+                            NULL);
+}
+
+static void
+save_as_cb (GObject      *source_object,
+           GAsyncResult *result,
+           gpointer      user_data)
+{
+       TeplTab *tab = TEPL_TAB (source_object);
+       GTask *task = G_TASK (user_data);
+       gboolean ok;
+
+       ok = _tepl_tab_saving_save_finish (tab, result);
+
+       g_task_return_boolean (task, ok);
+       g_object_unref (task);
+}
+
+static void
+save_file_chooser_response_cb (GtkFileChooserDialog *file_chooser_dialog,
+                              gint                  response_id,
+                              GTask                *task)
+{
+       if (response_id == GTK_RESPONSE_ACCEPT)
+       {
+               TeplTab *tab;
+               TeplBuffer *buffer;
+               TeplFile *file;
+               GFile *location;
+               TeplFileSaver *saver;
+
+               tab = g_task_get_source_object (task);
+               buffer = tepl_tab_get_buffer (tab);
+               file = tepl_buffer_get_file (buffer);
+
+               location = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (file_chooser_dialog));
+
+               saver = tepl_file_saver_new_with_target (buffer, file, location);
+               g_object_unref (location);
+
+               _tepl_tab_saving_save_async (tab, saver, save_as_cb, task);
+               g_object_unref (saver);
+       }
+       else
+       {
+               g_task_return_boolean (task, FALSE);
+               g_object_unref (task);
+       }
+
+       gtk_widget_destroy (GTK_WIDGET (file_chooser_dialog));
+}
+
+/**
+ * tepl_tab_save_as_async:
+ * @tab: a #TeplTab.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is
+ *   satisfied.
+ * @user_data: user data to pass to @callback.
+ *
+ * Shows a #GtkFileChooser to save the @tab to a different location, creates an
+ * appropriate #TeplFileSaver and asynchronously runs it.
+ *
+ * See the #GAsyncResult documentation to know how to use this function.
+ *
+ * Since: 4.0
+ */
+void
+tepl_tab_save_as_async (TeplTab             *tab,
+                       GAsyncReadyCallback  callback,
+                       gpointer             user_data)
+{
+       GTask *task;
+       GtkWidget *file_chooser_dialog;
+       GtkFileChooser *file_chooser;
+
+       g_return_if_fail (TEPL_IS_TAB (tab));
+
+       task = g_task_new (tab, NULL, callback, user_data);
+
+       file_chooser_dialog = gtk_file_chooser_dialog_new (_("Save File"),
+                                                          NULL,
+                                                          GTK_FILE_CHOOSER_ACTION_SAVE,
+                                                          _("_Cancel"), GTK_RESPONSE_CANCEL,
+                                                          _("_Save"), GTK_RESPONSE_ACCEPT,
+                                                          NULL);
+
+       gtk_dialog_set_default_response (GTK_DIALOG (file_chooser_dialog), GTK_RESPONSE_ACCEPT);
+
+       /* Prevent tab from being destroyed. */
+       gtk_window_set_modal (GTK_WINDOW (file_chooser_dialog), TRUE);
+
+       _tepl_utils_associate_secondary_window (GTK_WINDOW (file_chooser_dialog),
+                                               GTK_WIDGET (tab));
+
+       file_chooser = GTK_FILE_CHOOSER (file_chooser_dialog);
+
+       gtk_file_chooser_set_do_overwrite_confirmation (file_chooser, TRUE);
+       gtk_file_chooser_set_local_only (file_chooser, FALSE);
+
+       g_signal_connect (file_chooser_dialog,
+                         "response",
+                         G_CALLBACK (save_file_chooser_response_cb),
+                         task);
+
+       gtk_widget_show (file_chooser_dialog);
+}
+
+/**
+ * tepl_tab_save_as_finish:
+ * @tab: a #TeplTab.
+ * @result: a #GAsyncResult.
+ *
+ * Finishes a tab saving started with tepl_tab_save_as_async().
+ *
+ * Returns: whether the tab was saved successfully.
+ * Since: 4.0
+ */
+gboolean
+tepl_tab_save_as_finish (TeplTab      *tab,
+                        GAsyncResult *result)
+{
+       g_return_val_if_fail (TEPL_IS_TAB (tab), FALSE);
+       g_return_val_if_fail (g_task_is_valid (result, tab), FALSE);
+
+       return g_task_propagate_boolean (G_TASK (result), NULL);
+}
+
+static void
+save_as_async_simple_cb (GObject      *source_object,
+                        GAsyncResult *result,
+                        gpointer      user_data)
+{
+       TeplTab *tab = TEPL_TAB (source_object);
+
+       tepl_tab_save_as_finish (tab, result);
+       g_object_unref (tab);
+}
+
+/**
+ * tepl_tab_save_as_async_simple:
+ * @tab: a #TeplTab.
+ *
+ * The same as tepl_tab_save_as_async(), but without callback.
+ *
+ * This function is useful when you don't need to know:
+ * - when the operation is finished;
+ * - and whether the operation ran successfully.
+ *
+ * Since: 4.0
+ */
+void
+tepl_tab_save_as_async_simple (TeplTab *tab)
 {
        g_return_if_fail (TEPL_IS_TAB (tab));
-       g_return_if_fail (TEPL_IS_FILE_SAVER (saver));
 
        g_object_ref (tab);
-       _tepl_tab_saving_save_async (tab,
-                                    saver,
-                                    save_async_simple_cb,
-                                    NULL);
+       tepl_tab_save_as_async (tab,
+                               save_as_async_simple_cb,
+                               NULL);
 }
diff --git a/tepl/tepl-tab-saving.h b/tepl/tepl-tab-saving.h
index 8f0111a..1631458 100644
--- a/tepl/tepl-tab-saving.h
+++ b/tepl/tepl-tab-saving.h
@@ -1,13 +1,16 @@
-/* SPDX-FileCopyrightText: 2017 - Sébastien Wilmet <swilmet gnome org>
+/* SPDX-FileCopyrightText: 2017-2020 - Sébastien Wilmet <swilmet gnome org>
  * SPDX-License-Identifier: LGPL-3.0-or-later
  */
 
 #ifndef TEPL_TAB_SAVING_H
 #define TEPL_TAB_SAVING_H
 
-#include <gio/gio.h>
-#include "tepl-tab.h"
-#include "tepl-file-saver.h"
+#if !defined (TEPL_H_INSIDE) && !defined (TEPL_COMPILATION)
+#error "Only <tepl/tepl.h> can be included directly."
+#endif
+
+#include <tepl/tepl-tab.h>
+#include <tepl/tepl-file-saver.h>
 
 G_BEGIN_DECLS
 
@@ -21,9 +24,29 @@ G_GNUC_INTERNAL
 gboolean       _tepl_tab_saving_save_finish            (TeplTab      *tab,
                                                         GAsyncResult *result);
 
-G_GNUC_INTERNAL
-void           _tepl_tab_saving_save_async_simple      (TeplTab       *tab,
-                                                        TeplFileSaver *saver);
+_TEPL_EXTERN
+void           tepl_tab_save_async             (TeplTab             *tab,
+                                                GAsyncReadyCallback  callback,
+                                                gpointer             user_data);
+
+_TEPL_EXTERN
+gboolean       tepl_tab_save_finish            (TeplTab      *tab,
+                                                GAsyncResult *result);
+
+_TEPL_EXTERN
+void           tepl_tab_save_async_simple      (TeplTab *tab);
+
+_TEPL_EXTERN
+void           tepl_tab_save_as_async          (TeplTab             *tab,
+                                                GAsyncReadyCallback  callback,
+                                                gpointer             user_data);
+
+_TEPL_EXTERN
+gboolean       tepl_tab_save_as_finish         (TeplTab      *tab,
+                                                GAsyncResult *result);
+
+_TEPL_EXTERN
+void           tepl_tab_save_as_async_simple   (TeplTab *tab);
 
 G_END_DECLS
 
diff --git a/tepl/tepl-tab.c b/tepl/tepl-tab.c
index 2884d48..17b062e 100644
--- a/tepl/tepl-tab.c
+++ b/tepl/tepl-tab.c
@@ -6,11 +6,8 @@
 #include "tepl-tab.h"
 #include <glib/gi18n-lib.h>
 #include "tepl-close-confirm-dialog-single.h"
-#include "tepl-file-saver.h"
 #include "tepl-info-bar.h"
 #include "tepl-tab-group.h"
-#include "tepl-tab-saving.h"
-#include "tepl-utils.h"
 
 /**
  * SECTION:tab
@@ -505,248 +502,3 @@ tepl_tab_add_info_bar (TeplTab    *tab,
 
        TEPL_TAB_GET_CLASS (tab)->pack_info_bar (tab, info_bar);
 }
-
-/**
- * tepl_tab_save_async:
- * @tab: a #TeplTab.
- * @callback: (scope async): a #GAsyncReadyCallback to call when the request is
- *   satisfied.
- * @user_data: user data to pass to @callback.
- *
- * Saves asynchronously the content of the @tab. The #TeplFile:location must not
- * be %NULL.
- *
- * See the #GAsyncResult documentation to know how to use this function.
- *
- * Since: 4.0
- */
-void
-tepl_tab_save_async (TeplTab             *tab,
-                    GAsyncReadyCallback  callback,
-                    gpointer             user_data)
-{
-       TeplBuffer *buffer;
-       TeplFile *file;
-       GFile *location;
-       TeplFileSaver *saver;
-
-       g_return_if_fail (TEPL_IS_TAB (tab));
-
-       buffer = tepl_tab_get_buffer (tab);
-       file = tepl_buffer_get_file (buffer);
-       location = tepl_file_get_location (file);
-       g_return_if_fail (location != NULL);
-
-       saver = tepl_file_saver_new (buffer, file);
-       _tepl_tab_saving_save_async (tab, saver, callback, user_data);
-       g_object_unref (saver);
-}
-
-/**
- * tepl_tab_save_finish:
- * @tab: a #TeplTab.
- * @result: a #GAsyncResult.
- *
- * Finishes a tab saving started with tepl_tab_save_async().
- *
- * Returns: whether the tab was saved successfully.
- * Since: 4.0
- */
-gboolean
-tepl_tab_save_finish (TeplTab      *tab,
-                     GAsyncResult *result)
-{
-       return _tepl_tab_saving_save_finish (tab, result);
-}
-
-static void
-save_async_simple_cb (GObject      *source_object,
-                     GAsyncResult *result,
-                     gpointer      user_data)
-{
-       TeplTab *tab = TEPL_TAB (source_object);
-
-       tepl_tab_save_finish (tab, result);
-       g_object_unref (tab);
-}
-
-/**
- * tepl_tab_save_async_simple:
- * @tab: a #TeplTab.
- *
- * The same as tepl_tab_save_async(), but without callback.
- *
- * This function is useful when you don't need to know:
- * - when the operation is finished;
- * - and whether the operation ran successfully.
- *
- * Since: 4.0
- */
-void
-tepl_tab_save_async_simple (TeplTab *tab)
-{
-       g_return_if_fail (TEPL_IS_TAB (tab));
-
-       g_object_ref (tab);
-       tepl_tab_save_async (tab,
-                            save_async_simple_cb,
-                            NULL);
-}
-
-static void
-save_as_cb (GObject      *source_object,
-           GAsyncResult *result,
-           gpointer      user_data)
-{
-       TeplTab *tab = TEPL_TAB (source_object);
-       GTask *task = G_TASK (user_data);
-       gboolean ok;
-
-       ok = _tepl_tab_saving_save_finish (tab, result);
-
-       g_task_return_boolean (task, ok);
-       g_object_unref (task);
-}
-
-static void
-save_file_chooser_response_cb (GtkFileChooserDialog *file_chooser_dialog,
-                              gint                  response_id,
-                              GTask                *task)
-{
-       if (response_id == GTK_RESPONSE_ACCEPT)
-       {
-               TeplTab *tab;
-               TeplBuffer *buffer;
-               TeplFile *file;
-               GFile *location;
-               TeplFileSaver *saver;
-
-               tab = g_task_get_source_object (task);
-               buffer = tepl_tab_get_buffer (tab);
-               file = tepl_buffer_get_file (buffer);
-
-               location = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (file_chooser_dialog));
-
-               saver = tepl_file_saver_new_with_target (buffer, file, location);
-               g_object_unref (location);
-
-               _tepl_tab_saving_save_async (tab, saver, save_as_cb, task);
-               g_object_unref (saver);
-       }
-       else
-       {
-               g_task_return_boolean (task, FALSE);
-               g_object_unref (task);
-       }
-
-       gtk_widget_destroy (GTK_WIDGET (file_chooser_dialog));
-}
-
-/**
- * tepl_tab_save_as_async:
- * @tab: a #TeplTab.
- * @callback: (scope async): a #GAsyncReadyCallback to call when the request is
- *   satisfied.
- * @user_data: user data to pass to @callback.
- *
- * Shows a #GtkFileChooser to save the @tab to a different location, creates an
- * appropriate #TeplFileSaver and asynchronously runs it.
- *
- * See the #GAsyncResult documentation to know how to use this function.
- *
- * Since: 4.0
- */
-void
-tepl_tab_save_as_async (TeplTab             *tab,
-                       GAsyncReadyCallback  callback,
-                       gpointer             user_data)
-{
-       GTask *task;
-       GtkWidget *file_chooser_dialog;
-       GtkFileChooser *file_chooser;
-
-       g_return_if_fail (TEPL_IS_TAB (tab));
-
-       task = g_task_new (tab, NULL, callback, user_data);
-
-       file_chooser_dialog = gtk_file_chooser_dialog_new (_("Save File"),
-                                                          NULL,
-                                                          GTK_FILE_CHOOSER_ACTION_SAVE,
-                                                          _("_Cancel"), GTK_RESPONSE_CANCEL,
-                                                          _("_Save"), GTK_RESPONSE_ACCEPT,
-                                                          NULL);
-
-       gtk_dialog_set_default_response (GTK_DIALOG (file_chooser_dialog), GTK_RESPONSE_ACCEPT);
-
-       /* Prevent tab from being destroyed. */
-       gtk_window_set_modal (GTK_WINDOW (file_chooser_dialog), TRUE);
-
-       _tepl_utils_associate_secondary_window (GTK_WINDOW (file_chooser_dialog),
-                                               GTK_WIDGET (tab));
-
-       file_chooser = GTK_FILE_CHOOSER (file_chooser_dialog);
-
-       gtk_file_chooser_set_do_overwrite_confirmation (file_chooser, TRUE);
-       gtk_file_chooser_set_local_only (file_chooser, FALSE);
-
-       g_signal_connect (file_chooser_dialog,
-                         "response",
-                         G_CALLBACK (save_file_chooser_response_cb),
-                         task);
-
-       gtk_widget_show (file_chooser_dialog);
-}
-
-/**
- * tepl_tab_save_as_finish:
- * @tab: a #TeplTab.
- * @result: a #GAsyncResult.
- *
- * Finishes a tab saving started with tepl_tab_save_as_async().
- *
- * Returns: whether the tab was saved successfully.
- * Since: 4.0
- */
-gboolean
-tepl_tab_save_as_finish (TeplTab      *tab,
-                        GAsyncResult *result)
-{
-       g_return_val_if_fail (TEPL_IS_TAB (tab), FALSE);
-       g_return_val_if_fail (g_task_is_valid (result, tab), FALSE);
-
-       return g_task_propagate_boolean (G_TASK (result), NULL);
-}
-
-static void
-save_as_async_simple_cb (GObject      *source_object,
-                        GAsyncResult *result,
-                        gpointer      user_data)
-{
-       TeplTab *tab = TEPL_TAB (source_object);
-
-       tepl_tab_save_as_finish (tab, result);
-       g_object_unref (tab);
-}
-
-/**
- * tepl_tab_save_as_async_simple:
- * @tab: a #TeplTab.
- *
- * The same as tepl_tab_save_as_async(), but without callback.
- *
- * This function is useful when you don't need to know:
- * - when the operation is finished;
- * - and whether the operation ran successfully.
- *
- * Since: 4.0
- */
-void
-tepl_tab_save_as_async_simple (TeplTab *tab)
-{
-       g_return_if_fail (TEPL_IS_TAB (tab));
-
-       g_object_ref (tab);
-       tepl_tab_save_as_async (tab,
-                               save_as_async_simple_cb,
-                               NULL);
-}
diff --git a/tepl/tepl-tab.h b/tepl/tepl-tab.h
index f7e4580..6bd4f9d 100644
--- a/tepl/tepl-tab.h
+++ b/tepl/tepl-tab.h
@@ -97,30 +97,6 @@ _TEPL_EXTERN
 void           tepl_tab_add_info_bar           (TeplTab    *tab,
                                                 GtkInfoBar *info_bar);
 
-_TEPL_EXTERN
-void           tepl_tab_save_async             (TeplTab             *tab,
-                                                GAsyncReadyCallback  callback,
-                                                gpointer             user_data);
-
-_TEPL_EXTERN
-gboolean       tepl_tab_save_finish            (TeplTab      *tab,
-                                                GAsyncResult *result);
-
-_TEPL_EXTERN
-void           tepl_tab_save_async_simple      (TeplTab *tab);
-
-_TEPL_EXTERN
-void           tepl_tab_save_as_async          (TeplTab             *tab,
-                                                GAsyncReadyCallback  callback,
-                                                gpointer             user_data);
-
-_TEPL_EXTERN
-gboolean       tepl_tab_save_as_finish         (TeplTab      *tab,
-                                                GAsyncResult *result);
-
-_TEPL_EXTERN
-void           tepl_tab_save_as_async_simple   (TeplTab *tab);
-
 G_END_DECLS
 
 #endif /* TEPL_TAB_H */
diff --git a/tepl/tepl-window-actions-file.c b/tepl/tepl-window-actions-file.c
index 80bde1e..b333b02 100644
--- a/tepl/tepl-window-actions-file.c
+++ b/tepl/tepl-window-actions-file.c
@@ -11,6 +11,7 @@
 #include "tepl-file.h"
 #include "tepl-tab.h"
 #include "tepl-tab-group.h"
+#include "tepl-tab-saving.h"
 
 /* TeplApplicationWindow GActions for the File menu. */
 
diff --git a/tepl/tepl.h b/tepl/tepl.h
index 45f4679..568fd78 100644
--- a/tepl/tepl.h
+++ b/tepl/tepl.h
@@ -37,6 +37,7 @@
 #include <tepl/tepl-tab-group.h>
 #include <tepl/tepl-tab-label.h>
 #include <tepl/tepl-tab-loading.h>
+#include <tepl/tepl-tab-saving.h>
 #include <tepl/tepl-utils.h>
 #include <tepl/tepl-view.h>
 


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