]> Shamusworld >> Repos - architektonas/commitdiff
Fix grouping on layers other than 0 from disappearing.
authorShamus Hammons <jlhamm@acm.org>
Thu, 23 Apr 2020 23:23:54 +0000 (18:23 -0500)
committerShamus Hammons <jlhamm@acm.org>
Thu, 23 Apr 2020 23:23:54 +0000 (18:23 -0500)
src/applicationwindow.cpp
src/drawingview.cpp
src/global.cpp
src/global.h

index 7dd57aca22824c70f77ff62cb782808e47814569..cbb96362521aff7e37a2da3851551026eedde5a7 100644 (file)
@@ -537,57 +537,6 @@ void ApplicationWindow::Settings(void)
 //
 void ApplicationWindow::HandleGrouping(void)
 {
-#if 0
-       int itemsSelected = drawing->document.ItemsSelected();
-
-       // If nothing selected, do nothing
-       if (itemsSelected == 0)
-       {
-               statusBar()->showMessage(tr("No objects selected to make a group from."));
-               return;
-       }
-
-       // If it's a group that's selected, ungroup it and leave the objects in a
-       // selected state
-       if (itemsSelected == 1)
-       {
-               Object * object = drawing->document.SelectedItem(0);
-
-#if 0
-if (object == NULL)
-       printf("SelectedItem = NULL!\n");
-else
-       printf("SelectedItem = %08X, type = %i\n", object, object->type);
-#endif
-
-               if (object == NULL || object->type != OTContainer)
-               {
-                       statusBar()->showMessage(tr("A group requires two or more selected objects."));
-                       return;
-               }
-
-               // Need the parent of the group, we're assuming here that the parent is
-               // the drawing's document. Does it matter? Maybe...
-               // Could just stipulate that grouping like this only takes place where
-               // the parent of the group is the drawing's document. Makes life much
-               // simpler.
-               ((Container *)object)->SelectAll();
-               ((Container *)object)->MoveContentsTo(&(drawing->document));
-               drawing->document.Delete(object);
-               statusBar()->showMessage(tr("Objects ungrouped."));
-       }
-       // Otherwise, if it's a group of 2 or more objects (which can be groups too)
-       // group them and select the group
-       else if (itemsSelected > 1)
-       {
-               Container * container = new Container(Vector(), &(drawing->document));
-               drawing->document.MoveSelectedContentsTo(container);
-               drawing->document.Add(container);
-               container->DeselectAll();
-               container->state = OSSelected;
-               statusBar()->showMessage(QString(tr("Grouped %1 objects.")).arg(itemsSelected));
-       }
-#else
        int numSelected = drawing->select.size();
 
        // If nothing selected, do nothing
@@ -614,13 +563,8 @@ else
                // Could just stipulate that grouping like this only takes place where
                // the parent of the group is the drawing's document. Makes life much
                // simpler.
-//             ((Container *)object)->SelectAll();
-//             ((Container *)object)->MoveContentsTo(&(drawing->document));
-//             drawing->document.Delete(object);
                Container * c = (Container *)obj;
-//printf("Ungroup: container size = %li\n", c->objects.size());
                SelectAll(c->objects);
-//printf("Ungroup: document size = %li (pre-AddObjectsTo)\n", drawing->document.objects.size());
                RemoveSelectedObjects(drawing->document.objects);
                AddObjectsTo(drawing->document.objects, c->objects);
                drawing->select.clear();
@@ -633,20 +577,12 @@ else
        // group them and select the group
        else if (numSelected > 1)
        {
-//             Container * container = new Container(Vector(), &(drawing->document));
-//             drawing->document.MoveSelectedContentsTo(container);
-//             drawing->document.Add(container);
-//             container->DeselectAll();
-//             container->state = OSSelected;
-
                Container * c = new Container();
-//             AddObjectsTo(c->objects, drawing->select);
-//             RemoveSelectedObjects(drawing->document.objects);
                MoveSelectedObjectsTo(c->objects, drawing->document.objects);
                drawing->document.objects.push_back(c);
                ClearSelected(c->objects);
                c->selected = true;
-               c->layer = Global::currentLayer;
+               c->layer = Global::activeLayer;
 
                Rect r = drawing->GetObjectExtents((Object *)c);
                c->p[0] = r.TopLeft();
@@ -657,7 +593,6 @@ else
                statusBar()->showMessage(QString(tr("Grouped %1 objects.")).arg(numSelected));
 //printf("Group: document size = %li\n", drawing->document.objects.size());
        }
-#endif
 
        drawing->update();
 }
index 60f941e94c37a3e63d738d15369b7b69c8cd1bfe..7c5107ea3dd037284cfd6e24369124f7707452f2 100644 (file)
@@ -2,7 +2,7 @@
 // drawingview.cpp
 //
 // Part of the Architektonas Project
-// (C) 2011 Underground Software
+// (C) 2011-2020 Underground Software
 // See the README and GPLv3 files for licensing and warranty information
 //
 // JLH = James Hammons <jlhamm@acm.org>
index f9e016fef6cd92e09ce0439750c9316476dc9678..6dfbd901ca140d7f8ec0d9db1476235d15fd1dda 100644 (file)
@@ -27,7 +27,6 @@ int Global::tool = TTNone;
 int Global::toolState = TSNone;
 
 double Global::gridSpacing;
-int Global::currentLayer = 0;
 Point Global::snapPoint;
 bool Global::snapPointIsValid = false;
 uint32_t Global::objectID = 1;
index 06c04e80d288c688e91826f473b648bf2a207e3d..cdcd204e800d153b67ce45eb39f0073b41b3a4e3 100644 (file)
@@ -21,7 +21,6 @@ class Global
                static double gridSpacing;
                static bool selectionInProgress;
                static QRectF selection;
-               static int currentLayer;
                static QFont * font;
                static Point snapPoint;
                static bool snapPointIsValid;