             objects  (get-in state [:workspace-data page-id :objects])
             items    (->> selected
                           (map #(get objects %))
-                          (filter #(not= :frame (:type %))))]
+                          (filter #(not= :frame (:type %)))
+                          (map #(assoc % ::index (cph/position-on-parent (:id %) objects)))
+                          (sort-by ::index))]
+
         (when (not-empty items)
           (let [selrect   (geom/selection-rect items)
                 frame-id  (-> items first :frame-id)

                            :index index}
                           {:type :mov-objects
                            :parent-id id
                            :shapes (vec selected)}]

                uchanges
                (reduce (fn [res obj]
                          (conj res {:type :mov-objects
                                     :parent-id (:parent-id obj)
                                     :index (:index obj)
                                     :shapes [(:id obj)]}))
                        []
                        (->> selected
                             (map #(get objects %))
                             (map #(assoc % :index (cph/position-on-parent (:id %) objects)))
                             (sort-by :index)))

                uchanges (conj uchanges {:type :del-obj :id id})]


                                          (update :height #(/ % hprop))
                                          (assoc :left-offset left-offset)))))))))))


(defn adjust-group-shapes
  [ids]
