[gnome-builder/wip/gtk4-port: 1256/1774] plugins/vcsui: load project after clone




commit 6d4467369742cce2aa23d3d23d3d83920030e11f
Author: Christian Hergert <chergert redhat com>
Date:   Tue May 31 23:22:28 2022 -0700

    plugins/vcsui: load project after clone

 src/plugins/vcsui/gbp-vcsui-clone-page.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
---
diff --git a/src/plugins/vcsui/gbp-vcsui-clone-page.c b/src/plugins/vcsui/gbp-vcsui-clone-page.c
index c8616e76e..43a872d2d 100644
--- a/src/plugins/vcsui/gbp-vcsui-clone-page.c
+++ b/src/plugins/vcsui/gbp-vcsui-clone-page.c
@@ -27,6 +27,7 @@
 #include <adwaita.h>
 #include <vte/vte.h>
 
+#include <libide-greeter.h>
 #include <libide-gtk.h>
 #include <libide-gui.h>
 #include <libide-projects.h>
@@ -125,6 +126,7 @@ gbp_vcsui_clone_page_clone_cb (GObject      *object,
 {
   IdeVcsCloneRequest *request = (IdeVcsCloneRequest *)object;
   g_autoptr(GbpVcsuiClonePage) self = user_data;
+  IdeGreeterWorkspace *greeter;
   g_autoptr(GError) error = NULL;
   g_autoptr(GFile) directory = NULL;
 
@@ -134,6 +136,8 @@ gbp_vcsui_clone_page_clone_cb (GObject      *object,
   g_assert (G_IS_ASYNC_RESULT (result));
   g_assert (GBP_IS_VCSUI_CLONE_PAGE (self));
 
+  greeter = IDE_GREETER_WORKSPACE (ide_widget_get_workspace (GTK_WIDGET (self)));
+
   gtk_widget_hide (GTK_WIDGET (self->progress));
 
   if (!(directory = ide_vcs_clone_request_clone_finish (request, result, &error)))
@@ -144,10 +148,20 @@ gbp_vcsui_clone_page_clone_cb (GObject      *object,
     }
   else
     {
+      g_autoptr(IdeProjectInfo) project_info = NULL;
+
       g_debug ("Clone request complete\n");
+
+      project_info = ide_project_info_new ();
+      ide_project_info_set_file (project_info, directory);
+      ide_project_info_set_directory (project_info, directory);
+
+      ide_greeter_workspace_open_project (greeter, project_info);
     }
 
 failure:
+  ide_greeter_workspace_end (greeter);
+
   IDE_EXIT;
 }
 
@@ -205,6 +219,7 @@ clone_action (GtkWidget  *widget,
 {
   GbpVcsuiClonePage *self = (GbpVcsuiClonePage *)widget;
   g_autoptr(IdeNotification) notif = NULL;
+  IdeGreeterWorkspace *greeter;
 
   IDE_ENTRY;
 
@@ -225,6 +240,10 @@ clone_action (GtkWidget  *widget,
                            self->terminal,
                            0);
 
+  greeter = IDE_GREETER_WORKSPACE (ide_widget_get_workspace (widget));
+  ide_greeter_workspace_begin (greeter);
+  gtk_widget_action_set_enabled (widget, "clone-page.clone", FALSE);
+
   ide_vcs_clone_request_clone_async (self->request,
                                      notif,
                                      NULL,


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