[gnome-builder] buffer: add "reloading" parameter to IdeBufferManager:load-buffer
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] buffer: add "reloading" parameter to IdeBufferManager:load-buffer
- Date: Thu, 18 Feb 2016 22:40:36 +0000 (UTC)
commit 218e48c7e4bd4116e57640c4556fcc22b4a7f649
Author: Christian Hergert <christian hergert me>
Date: Thu Feb 18 14:40:25 2016 -0800
buffer: add "reloading" parameter to IdeBufferManager:load-buffer
This can be used to disambiguate between a new buffer being created and
and an existing buffer being reloaded from changes to the underlying
storage.
libide/editor/ide-editor-perspective.c | 8 ++++++++
libide/ide-buffer-manager.c | 13 +++++++++----
2 files changed, 17 insertions(+), 4 deletions(-)
---
diff --git a/libide/editor/ide-editor-perspective.c b/libide/editor/ide-editor-perspective.c
index 4aaa499..b7937cc 100644
--- a/libide/editor/ide-editor-perspective.c
+++ b/libide/editor/ide-editor-perspective.c
@@ -157,6 +157,7 @@ ide_editor_perspective_context_set (GtkWidget *widget,
static void
ide_editor_perspective_load_buffer (IdeEditorPerspective *self,
IdeBuffer *buffer,
+ gboolean reloading,
IdeBufferManager *buffer_manager)
{
IdeEditorView *view;
@@ -167,6 +168,13 @@ ide_editor_perspective_load_buffer (IdeEditorPerspective *self,
g_assert (IDE_IS_BUFFER (buffer));
g_assert (IDE_IS_BUFFER_MANAGER (buffer_manager));
+ /*
+ * We only want to create a new view when the buffer is originally
+ * created, not when it's reloaded.
+ */
+ if (reloading)
+ return;
+
IDE_TRACE_MSG ("Loading %s", ide_buffer_get_title (buffer));
view = g_object_new (IDE_TYPE_EDITOR_VIEW,
diff --git a/libide/ide-buffer-manager.c b/libide/ide-buffer-manager.c
index 8abad96..1edd115 100644
--- a/libide/ide-buffer-manager.c
+++ b/libide/ide-buffer-manager.c
@@ -630,7 +630,7 @@ ide_buffer_manager__load_file_query_info_cb (GObject *object,
_ide_buffer_set_mtime (state->buffer, &tv);
}
- g_signal_emit (self, signals [LOAD_BUFFER], 0, state->buffer);
+ g_signal_emit (self, signals [LOAD_BUFFER], 0, state->buffer, !state->is_new);
gtk_source_file_loader_load_async (state->loader,
G_PRIORITY_DEFAULT,
@@ -1379,9 +1379,13 @@ ide_buffer_manager_class_init (IdeBufferManagerClass *klass)
* IdeBufferManager::load-buffer:
* @self: An #IdeBufferManager.
* @buffer: an #IdeBuffer.
+ * @reloading: if the buffer is being reloaded
*
* This signal is emitted when a request has been made to load a buffer from storage. You might
* connect to this signal to be notified when loading of a buffer has begun.
+ *
+ * If @reloading is %TRUE, then the buffer is being force-reloaded due to changes
+ * from the host file-system.
*/
signals [LOAD_BUFFER] = g_signal_new ("load-buffer",
G_TYPE_FROM_CLASS (klass),
@@ -1389,8 +1393,9 @@ ide_buffer_manager_class_init (IdeBufferManagerClass *klass)
0,
NULL, NULL, NULL,
G_TYPE_NONE,
- 1,
- IDE_TYPE_BUFFER);
+ 2,
+ IDE_TYPE_BUFFER,
+ G_TYPE_BOOLEAN);
/**
* IdeBufferManager::buffer-loaded:
@@ -1676,7 +1681,7 @@ ide_buffer_manager_create_temporary_buffer (IdeBufferManager *self)
NULL);
g_signal_emit (self, signals [CREATE_BUFFER], 0, file, &buffer);
- g_signal_emit (self, signals [LOAD_BUFFER], 0, buffer);
+ g_signal_emit (self, signals [LOAD_BUFFER], 0, buffer, FALSE);
ide_buffer_manager_add_buffer (self, buffer);
g_signal_emit (self, signals [BUFFER_LOADED], 0, buffer);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]