]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - contrib/bobtoolz/funchandlers-GTK.cpp
Merge commit 'c845c5cd8f427d39665d6a8b1f6eeff401370d80' into garux-merge
[xonotic/netradiant.git] / contrib / bobtoolz / funchandlers-GTK.cpp
index b07bf328f7642c0d5776bc70a340d9801d506d1b..4436afbe5b995d32c724aa9196e06476c3554991 100644 (file)
@@ -463,7 +463,7 @@ void DoMergePatches(){
        merge_info = mrgPatches[0].IsMergable( &mrgPatches[1] );
 
        if ( merge_info.mergable ) {
-               globalOutputStream() << merge_info.pos1 << " " <<  merge_info.pos2;
+//             globalOutputStream() << merge_info.pos1 << " " <<  merge_info.pos2;
                //Message removed, No tools give feedback on success.
                //globalOutputStream() << "bobToolz MergePatches: Patches Mergable.\n";
                DPatch* newPatch = mrgPatches[0].MergePatches( merge_info, &mrgPatches[0], &mrgPatches[1] );
@@ -481,10 +481,17 @@ void DoMergePatches(){
                }
                else
                {
+                       newPatch->BuildInRadiant( patches[0]->path().parent().get_pointer() );
+
+                       scene::Instance& parent = *( patches[1]->parent() );
                        Path_deleteTop( patches[0]->path() );
                        Path_deleteTop( patches[1]->path() );
+                       Entity* entity = Node_getEntity( parent.path().top() );
+                       if ( entity != 0
+                               && Node_getTraversable( parent.path().top() )->empty() ) {
+                               Path_deleteTop( parent.path() );
+                       }
 
-                       newPatch->BuildInRadiant();
                        delete newPatch;
                }
        }
@@ -519,7 +526,7 @@ void DoSplitPatch() {
 
        std::list<DPatch> patchList = patch.Split();
        for ( std::list<DPatch>::iterator patches = patchList.begin(); patches != patchList.end(); patches++ ) {
-               ( *patches ).BuildInRadiant();
+               ( *patches ).BuildInRadiant( instance.path().parent().get_pointer() );
        }
 
        Path_deleteTop( instance.path() );
@@ -549,7 +556,7 @@ void DoSplitPatchCols() {
 
        std::list<DPatch> patchList = patch.SplitCols();
        for ( std::list<DPatch>::iterator patches = patchList.begin(); patches != patchList.end(); patches++ ) {
-               ( *patches ).BuildInRadiant();
+               ( *patches ).BuildInRadiant( instance.path().parent().get_pointer() );
        }
 
        Path_deleteTop( instance.path() );
@@ -579,7 +586,7 @@ void DoSplitPatchRows() {
 
        std::list<DPatch> patchList = patch.SplitRows();
        for ( std::list<DPatch>::iterator patches = patchList.begin(); patches != patchList.end(); patches++ ) {
-               ( *patches ).BuildInRadiant();
+               ( *patches ).BuildInRadiant( instance.path().parent().get_pointer() );
        }
 
        Path_deleteTop( instance.path() );