[gnome-builder] buffer-manager: reclaim buffers, possibly saving them first
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] buffer-manager: reclaim buffers, possibly saving them first
- Date: Fri, 24 Apr 2015 21:44:42 +0000 (UTC)
commit 2ce9751a60d88ac6aec53658984c0b5d0c656066
Author: Christian Hergert <christian hergert me>
Date: Fri Apr 24 14:44:16 2015 -0700
buffer-manager: reclaim buffers, possibly saving them first
libide/ide-buffer-manager.c | 43 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 43 insertions(+), 0 deletions(-)
---
diff --git a/libide/ide-buffer-manager.c b/libide/ide-buffer-manager.c
index cb8e20d..7bbb10d 100644
--- a/libide/ide-buffer-manager.c
+++ b/libide/ide-buffer-manager.c
@@ -1529,11 +1529,54 @@ ide_buffer_manager_create_buffer (IdeBufferManager *self)
return buffer;
}
+static void
+ide_buffer_manager_reclaim__save_cb (GObject *object,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ IdeBufferManager *self = (IdeBufferManager *)object;
+ g_autoptr(IdeBuffer) buffer = user_data;
+ g_autoptr(GError) error = NULL;
+
+ IDE_ENTRY;
+
+ g_assert (IDE_IS_BUFFER_MANAGER (self));
+ g_assert (IDE_IS_BUFFER (buffer));
+
+ if (!ide_buffer_manager_save_file_finish (self, result, &error))
+ {
+ g_warning (_("Failed to save buffer, ignoring reclamation."));
+ g_warning ("%s", error->message);
+ IDE_EXIT;
+ }
+
+ ide_buffer_manager_remove_buffer (self, buffer);
+
+ IDE_EXIT;
+}
+
void
_ide_buffer_manager_reclaim (IdeBufferManager *self,
IdeBuffer *buffer)
{
+ IDE_ENTRY;
+
g_assert (IDE_IS_BUFFER_MANAGER (self));
g_assert (IDE_IS_BUFFER (buffer));
+ if (gtk_text_buffer_get_modified (GTK_TEXT_BUFFER (buffer)))
+ {
+ IdeFile *file;
+
+ file = ide_buffer_get_file (buffer);
+ ide_buffer_manager_save_file_async (self, buffer, file, NULL, NULL,
+ ide_buffer_manager_reclaim__save_cb,
+ g_object_ref (buffer));
+ }
+ else
+ {
+ ide_buffer_manager_remove_buffer (self, buffer);
+ }
+
+ IDE_EXIT;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]