fix - remove Windows not called on window close
authorAlan <alan@roojs.com>
Wed, 3 Jan 2024 02:09:17 +0000 (10:09 +0800)
committerAlan <alan@roojs.com>
Wed, 3 Jan 2024 02:09:17 +0000 (10:09 +0800)
src/Application.vala
src/Builder4/MainWindow.bjs
src/Builder4/MainWindow.vala

index c366623..b2d347c 100644 (file)
@@ -547,13 +547,14 @@ flutter-project  - create a flutter project in /tmp/test-flutter
                
                public static void removeWindow(Xcls_MainWindow w)
                {
-               
+                       //GLib.debug("remove window before = %d", BuilderApplication.windows.size);
                        BuilderApplication.windows.remove(w);
                        BuilderApplication.updateWindows();
                                
                        w.el.hide();
                        w.el.close();
                        w.el.destroy();
+                       //GLib.debug("remove window after = %d", BuilderApplication.windows.size);
                        
                        
                }
index 2ffef3a..2d956ba 100644 (file)
    "listeners" : {
     "close_request" : [
      "( ) => {",
+     "\t Resources.singleton().disconnect(_this.statusbar.handler_id);",
+     "\t ",
+     "\t BuilderApplication.removeWindow(this);",
+     "\t ",
+     "\t if (BuilderApplication.windows.size  < 1) {",
      "",
-     "\treturn false;",
+     "\t\tBuilderApplication.singleton(  null ).quit();",
+     "\t }",
+     "\treturn true;",
      "}",
      ""
     ],
      "() =>  {",
      " ",
      " ",
-     " Resources.singleton().disconnect(_this.statusbar.handler_id);",
-     " ",
-     " BuilderApplication.removeWindow(this);",
-     " ",
-     " if (BuilderApplication.windows.size  < 1) {",
      "",
-     "    BuilderApplication.singleton(  null ).quit();",
-     " }",
      "}"
     ],
     "show" : [
index 92f7533..e5c8b87 100644 (file)
 
             //listeners
             this.el.close_request.connect( ( ) => {
+                Resources.singleton().disconnect(_this.statusbar.handler_id);
+                
+                BuilderApplication.removeWindow(this);
+                
+                if (BuilderApplication.windows.size  < 1) {
             
-               return false;
+                       BuilderApplication.singleton(  null ).quit();
+                }
+               return true;
             });
             this.el.show.connect( ( ) => {
                 // hide the file editing..
             this.el.hide.connect( () =>  {
              
              
-             Resources.singleton().disconnect(_this.statusbar.handler_id);
-             
-             BuilderApplication.removeWindow(this);
-             
-             if (BuilderApplication.windows.size  < 1) {
             
-                BuilderApplication.singleton(  null ).quit();
-             }
             });
         }