[gnome-builder/gnome-builder-3-26] workbennch: add a IDE_WORKBENCH_OPEN_FLAGS_NO_VIEW flag



commit 22de9f611facc7fea2e5159f5ff089a5d94b0207
Author: Sebastien Lafargue <slafargue gnome org>
Date:   Wed Sep 20 11:15:20 2017 +0200

    workbennch: add a IDE_WORKBENCH_OPEN_FLAGS_NO_VIEW flag
    
    to resume:
    
    IDE_WORKBENCH_OPEN_FLAGS_NO_VIEW:
      load the buffer but don't create a view
    
    IDE_WORKBENCH_OPEN_FLAGS_BACKGROUND:
      load the buffer, create the view, don't present it to the user
    
    of course the buffer/view are only created if it's not already done.

 libide/buffers/ide-buffer-manager.c        |    8 +++++---
 libide/editor/ide-editor-workbench-addin.c |    4 +++-
 libide/workbench/ide-workbench.h           |    1 +
 plugins/command-bar/gb-vim.c               |    2 +-
 4 files changed, 10 insertions(+), 5 deletions(-)
---
diff --git a/libide/buffers/ide-buffer-manager.c b/libide/buffers/ide-buffer-manager.c
index 4cd9b09..2245488 100644
--- a/libide/buffers/ide-buffer-manager.c
+++ b/libide/buffers/ide-buffer-manager.c
@@ -712,8 +712,9 @@ ide_buffer_manager__load_file_query_info_cb (GObject      *object,
         }
     }
 
-  if (state->is_new || (state->flags & IDE_WORKBENCH_OPEN_FLAGS_BACKGROUND) == 0)
-    create_new_view = TRUE;
+  if (!(state->flags & IDE_WORKBENCH_OPEN_FLAGS_NO_VIEW))
+    if (state->is_new || (state->flags & IDE_WORKBENCH_OPEN_FLAGS_BACKGROUND) == 0)
+      create_new_view = TRUE;
 
   g_signal_emit (self, signals [LOAD_BUFFER], 0, state->buffer, create_new_view);
 
@@ -862,8 +863,9 @@ ide_buffer_manager_load_file_async (IdeBufferManager       *self,
                                   "fraction", 1.0,
                                   NULL);
       g_task_return_pointer (task, g_object_ref (buffer), g_object_unref);
-      if (!(flags & IDE_WORKBENCH_OPEN_FLAGS_BACKGROUND))
+      if (!(flags & IDE_WORKBENCH_OPEN_FLAGS_BACKGROUND || flags & IDE_WORKBENCH_OPEN_FLAGS_NO_VIEW))
         ide_buffer_manager_set_focus_buffer (self, buffer);
+
       IDE_EXIT;
     }
 
diff --git a/libide/editor/ide-editor-workbench-addin.c b/libide/editor/ide-editor-workbench-addin.c
index 2287208..3042a1d 100644
--- a/libide/editor/ide-editor-workbench-addin.c
+++ b/libide/editor/ide-editor-workbench-addin.c
@@ -362,7 +362,9 @@ ide_editor_workbench_addin_open_cb (GObject      *object,
         }
     }
 
-  if (self->perspective != NULL && !(open_file_task_data->flags & IDE_WORKBENCH_OPEN_FLAGS_BACKGROUND))
+  if (self->perspective != NULL &&
+      !(open_file_task_data->flags & IDE_WORKBENCH_OPEN_FLAGS_NO_VIEW) &&
+      !(open_file_task_data->flags & IDE_WORKBENCH_OPEN_FLAGS_BACKGROUND))
     ide_editor_perspective_focus_buffer_in_current_stack (self->perspective, buffer);
 
   g_task_return_boolean (task, TRUE);
diff --git a/libide/workbench/ide-workbench.h b/libide/workbench/ide-workbench.h
index d2a90fa..4dff307 100644
--- a/libide/workbench/ide-workbench.h
+++ b/libide/workbench/ide-workbench.h
@@ -34,6 +34,7 @@ typedef enum
 {
   IDE_WORKBENCH_OPEN_FLAGS_NONE       = 0,
   IDE_WORKBENCH_OPEN_FLAGS_BACKGROUND = 1 << 0,
+  IDE_WORKBENCH_OPEN_FLAGS_NO_VIEW    = 1 << 1,
 } IdeWorkbenchOpenFlags;
 
 #define IDE_TYPE_WORKBENCH (ide_workbench_get_type())
diff --git a/plugins/command-bar/gb-vim.c b/plugins/command-bar/gb-vim.c
index 85b0413..664413a 100644
--- a/plugins/command-bar/gb-vim.c
+++ b/plugins/command-bar/gb-vim.c
@@ -616,7 +616,7 @@ load_split_async (GtkWidget            *active_widget,
                                   &file,
                                   1,
                                   "editor",
-                                  IDE_WORKBENCH_OPEN_FLAGS_BACKGROUND,
+                                  IDE_WORKBENCH_OPEN_FLAGS_NO_VIEW,
                                   NULL,
                                   callback,
                                   split_callback_data);


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