682 } |
682 } |
683 |
683 |
684 // ============================================================================= |
684 // ============================================================================= |
685 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
685 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
686 // ============================================================================= |
686 // ============================================================================= |
|
687 void ForgeWindow::scrollToSelection () { |
|
688 if (sel.size() == 0) |
|
689 return; |
|
690 |
|
691 LDObject* obj = sel[sel.size () - 1]; |
|
692 qObjList->scrollToItem (obj->qObjListEntry); |
|
693 } |
|
694 |
|
695 // ============================================================================= |
|
696 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
|
697 // ============================================================================= |
687 void ForgeWindow::slot_selectionChanged () { |
698 void ForgeWindow::slot_selectionChanged () { |
688 if (g_bSelectionLocked == true) |
699 if (g_bSelectionLocked == true) |
689 return; |
700 return; |
690 |
701 |
691 /* |
702 /* |
757 |
768 |
758 // ============================================================================= |
769 // ============================================================================= |
759 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
770 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
760 // ============================================================================= |
771 // ============================================================================= |
761 ulong ForgeWindow::getInsertionPoint () { |
772 ulong ForgeWindow::getInsertionPoint () { |
762 ulong ulIndex; |
773 if (sel.size () > 0) { |
763 |
|
764 if (qObjList->selectedItems().size() == 1) { |
|
765 // If we have a selection, put the item after it. |
774 // If we have a selection, put the item after it. |
766 for (ulIndex = 0; ulIndex < g_CurrentFile->objects.size(); ++ulIndex) |
775 return (sel[sel.size() - 1]->getIndex (g_CurrentFile)) + 1; |
767 if (g_CurrentFile->objects[ulIndex]->qObjListEntry == qObjList->selectedItems()[0]) |
|
768 break; |
|
769 |
|
770 if (ulIndex >= g_CurrentFile->objects.size()) |
|
771 return ulIndex + 1; |
|
772 } |
776 } |
773 |
777 |
774 // Otherwise place the object at the end. |
778 // Otherwise place the object at the end. |
775 return g_CurrentFile->objects.size(); |
779 return g_CurrentFile->objects.size(); |
776 } |
780 } |
809 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
813 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
810 // ============================================================================= |
814 // ============================================================================= |
811 void ForgeWindow::updateSelection () { |
815 void ForgeWindow::updateSelection () { |
812 g_bSelectionLocked = true; |
816 g_bSelectionLocked = true; |
813 |
817 |
|
818 qObjList->clearSelection (); |
814 for (LDObject* obj : sel) |
819 for (LDObject* obj : sel) |
815 obj->qObjListEntry->setSelected (true); |
820 obj->qObjListEntry->setSelected (true); |
816 |
821 |
817 g_bSelectionLocked = false; |
822 g_bSelectionLocked = false; |
818 slot_selectionChanged (); |
823 slot_selectionChanged (); |