diff --git a/src/core/UBPersistenceManager.cpp b/src/core/UBPersistenceManager.cpp index 4ad92a11..f871df88 100644 --- a/src/core/UBPersistenceManager.cpp +++ b/src/core/UBPersistenceManager.cpp @@ -504,8 +504,6 @@ UBDocumentProxy* UBPersistenceManager::createDocumentFromDir(const QString& pDoc doc->setUuid(QUuid::createUuid()); doc->setPageCount(sceneCount(doc)); - UBMetadataDcSubsetAdaptor::persist(doc); - for(int i = 0; i < doc->pageCount(); i++) { UBSvgSubsetAdaptor::setSceneUuid(doc, i, QUuid::createUuid()); @@ -519,6 +517,7 @@ UBDocumentProxy* UBPersistenceManager::createDocumentFromDir(const QString& pDoc addDoc = true; } if (addDoc) { + UBMetadataDcSubsetAdaptor::persist(doc); mDocumentTreeStructureModel->addDocument(doc); emit proxyListChanged(); emit documentCreated(doc); diff --git a/src/document/UBDocumentController.cpp b/src/document/UBDocumentController.cpp index f1e9cbfa..dfcd5d91 100644 --- a/src/document/UBDocumentController.cpp +++ b/src/document/UBDocumentController.cpp @@ -1292,12 +1292,13 @@ void UBDocumentTreeView::setSelectedAndExpanded(const QModelIndex &pIndex, bool ? QItemSelectionModel::Select : QItemSelectionModel::Deselect; - selectionModel()->select(proxy->mapFromSource(indexCurrentDoc), QItemSelectionModel::Rows | sel); - setCurrentIndex(pExpand ? indexCurrentDoc : QModelIndex()); + selectionModel()->select(proxy->mapFromSource(indexCurrentDoc), QItemSelectionModel::Rows | sel); + + while (indexCurrentDoc.parent().isValid()) { setExpanded(indexCurrentDoc.parent(), pExpand); indexCurrentDoc = indexCurrentDoc.parent(); @@ -1808,6 +1809,8 @@ void UBDocumentController::TreeViewSelectionChanged(const QItemSelection &select //if multi-selection if(list.count() > 1){ + //selectOnlyTopLevelItems(mDocumentUI->documentTreeView->selectionModel()->selectedRows()); + //check if the selection is in the same top-level folder QModelIndex sourceIndex1 = mapIndexToSource(list.at(list.count()-1)); QModelIndex sourceIndex2 = mapIndexToSource(list.at(list.count()-2)); @@ -1868,7 +1871,6 @@ void UBDocumentController::TreeViewSelectionChanged(const QItemSelection &select } */ } - } void UBDocumentController::itemSelectionChanged(LastSelectedElementType newSelection) @@ -2330,8 +2332,10 @@ void UBDocumentController::moveIndexesToTrash(const QModelIndexList &list, UBDoc UBDocumentProxy *proxy = docModel->proxyForIndex(sourceSibling); - docModel->setCurrentDocument(proxy); setDocument(proxy); + UBApplication::boardController->setActiveDocumentScene(proxy,0,true); + docModel->setCurrentDocument(proxy); + selectionModel->select(sibling, QItemSelectionModel::ClearAndSelect); @@ -2344,8 +2348,9 @@ void UBDocumentController::moveIndexesToTrash(const QModelIndexList &list, UBDoc UBDocumentProxy *proxy = docModel->proxyForIndex(sourceSibling); - docModel->setCurrentDocument(proxy); setDocument(proxy); + UBApplication::boardController->setActiveDocumentScene(proxy,0,true); + docModel->setCurrentDocument(proxy); selectionModel->select(sibling, QItemSelectionModel::ClearAndSelect); @@ -2572,7 +2577,6 @@ void UBDocumentController::importFile() createdDocument = docManager->importFile(selectedFile, groupName); - if (createdDocument) { selectDocument(createdDocument, true, true); @@ -2704,10 +2708,18 @@ void UBDocumentController::pageSelectionChanged() if (mIsClosing) return; + UBDocumentTreeModel *docModel = UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel; + bool pageSelected = mDocumentUI->thumbnailWidget->selectedItems().count() > 0; + bool docSelected = docModel->isDocument(firstSelectedTreeIndex()); + bool folderSelected = docModel->isCatalog(firstSelectedTreeIndex()); if (pageSelected) itemSelectionChanged(Page); + else if (docSelected) + itemSelectionChanged(Document); + else if (folderSelected) + itemSelectionChanged(Folder); else itemSelectionChanged(None);