Your ROOT_URL in app.ini is http://git.osmesh.ru/ but you are visiting http://91.221.70.94:3000/MOS/OpenBoard/commit/f9d482e1154de57627e5fbc6cb84dd4c95682efc?style=split&whitespace=ignore-eol You should set ROOT_URL correctly, otherwise the web may not work correctly.

comment some code to avoid crash on page change. To be reworked

preferencesAboutTextFull
Claudio Valerio 13 years ago
parent a2a72d41ed
commit f9d482e115
  1. 101
      src/board/UBBoardController.cpp
  2. 4
      src/document/UBDocumentContainer.cpp
  3. 6
      src/gui/UBDocumentNavigator.cpp

@ -1567,57 +1567,64 @@ void UBBoardController::moveSceneToIndex(int source, int target)
void UBBoardController::ClearUndoStack() void UBBoardController::ClearUndoStack()
{ {
QSet<QGraphicsItem*> uniqueItems; // The code has been removed because it leads to a strange error and because the final goal has never been
// go through all stack command // reached on tests and sound a little bit strange.
for(int i = 0; i < UBApplication::undoStack->count(); i++) // Strange error: item->scene() crashes the application because item doesn't implement scene() method. I'm
{ // not able to give all the steps to reproduce this error sistematically but is quite frequent (~ twice per utilisation hours)
// strange goal: if item is on the undocommand, the item->scene() is null and the item is not on the deleted scene item list then
UBAbstractUndoCommand *abstractCmd = (UBAbstractUndoCommand*)UBApplication::undoStack->command(i); // then it's deleted.
if(abstractCmd->getType() != UBAbstractUndoCommand::undotype_GRAPHICITEM)
continue; // QSet<QGraphicsItem*> uniqueItems;
// // go through all stack command
UBGraphicsItemUndoCommand *cmd = (UBGraphicsItemUndoCommand*)UBApplication::undoStack->command(i); // for(int i = 0; i < UBApplication::undoStack->count(); i++)
// {
// go through all added and removed objects, for create list of unique objects
// grouped items will be deleted by groups, so we don't need do delete that items. // UBAbstractUndoCommand *abstractCmd = (UBAbstractUndoCommand*)UBApplication::undoStack->command(i);
QSetIterator<QGraphicsItem*> itAdded(cmd->GetAddedList()); // if(abstractCmd->getType() != UBAbstractUndoCommand::undotype_GRAPHICITEM)
while (itAdded.hasNext()) // continue;
{
QGraphicsItem* item = itAdded.next(); // UBGraphicsItemUndoCommand *cmd = (UBGraphicsItemUndoCommand*)UBApplication::undoStack->command(i);
if( !uniqueItems.contains(item) && !(item->parentItem() && UBGraphicsGroupContainerItem::Type == item->parentItem()->type()))
uniqueItems.insert(item); // // go through all added and removed objects, for create list of unique objects
} // // grouped items will be deleted by groups, so we don't need do delete that items.
// QSetIterator<QGraphicsItem*> itAdded(cmd->GetAddedList());
QSetIterator<QGraphicsItem*> itRemoved(cmd->GetRemovedList()); // while (itAdded.hasNext())
while (itRemoved.hasNext()) // {
{ // QGraphicsItem* item = itAdded.next();
QGraphicsItem* item = itRemoved.next(); // if( !uniqueItems.contains(item) && !(item->parentItem() && UBGraphicsGroupContainerItem::Type == item->parentItem()->type()))
if( !uniqueItems.contains(item) && !(item->parentItem() && UBGraphicsGroupContainerItem::Type == item->parentItem()->type())) // uniqueItems.insert(item);
uniqueItems.insert(item); // }
}
} // QSetIterator<QGraphicsItem*> itRemoved(cmd->GetRemovedList());
// while (itRemoved.hasNext())
// {
// QGraphicsItem* item = itRemoved.next();
// if( !uniqueItems.contains(item) && !(item->parentItem() && UBGraphicsGroupContainerItem::Type == item->parentItem()->type()))
// uniqueItems.insert(item);
// }
// }
// // go through all unique items, and check, ot on scene, or not.
// // if not on scene, than item can be deleted
// QSetIterator<QGraphicsItem*> itUniq(uniqueItems);
// while (itUniq.hasNext())
// {
// QGraphicsItem* item = itUniq.next();
// UBGraphicsScene *scene = NULL;
// if (item->scene()) {
// scene = dynamic_cast<UBGraphicsScene*>(item->scene());
// }
// if(!scene)
// {
// if (!mActiveScene->deleteItem(item))
// delete item;
// }
// }
// clear stack, and command list // clear stack, and command list
UBApplication::undoStack->clear(); UBApplication::undoStack->clear();
// go through all unique items, and check, ot on scene, or not.
// if not on scene, than item can be deleted
QSetIterator<QGraphicsItem*> itUniq(uniqueItems);
while (itUniq.hasNext())
{
QGraphicsItem* item = itUniq.next();
UBGraphicsScene *scene = NULL;
if (item->scene()) {
scene = dynamic_cast<UBGraphicsScene*>(item->scene());
}
if(!scene)
{
if (!mActiveScene->deleteItem(item))
delete item;
}
}
} }
void UBBoardController::adjustDisplayViews() void UBBoardController::adjustDisplayViews()

@ -34,8 +34,10 @@ UBDocumentContainer::UBDocumentContainer(QObject * parent)
UBDocumentContainer::~UBDocumentContainer() UBDocumentContainer::~UBDocumentContainer()
{ {
foreach(const QPixmap* pm, mDocumentThumbs) foreach(const QPixmap* pm, mDocumentThumbs){
delete pm; delete pm;
pm = NULL;
}
} }
void UBDocumentContainer::setDocument(UBDocumentProxy* document, bool forceReload) void UBDocumentContainer::setDocument(UBDocumentProxy* document, bool forceReload)

@ -92,12 +92,13 @@ void UBDocumentNavigator::generateThumbnails(UBDocumentContainer* source)
{ {
mScene->removeItem(it); mScene->removeItem(it);
delete it; delete it;
it = NULL;
} }
for(int i = 0; i < source->selectedDocument()->pageCount(); i++) for(int i = 0; i < source->selectedDocument()->pageCount(); i++)
{ {
const QPixmap* pix = source->pageAt(i);
const QPixmap* pix = source->pageAt(i); Q_ASSERT(!pix->isNull());
int pageIndex = UBDocumentContainer::pageFromSceneIndex(i); int pageIndex = UBDocumentContainer::pageFromSceneIndex(i);
UBSceneThumbnailNavigPixmap* pixmapItem = new UBSceneThumbnailNavigPixmap(*pix, source->selectedDocument(), i); UBSceneThumbnailNavigPixmap* pixmapItem = new UBSceneThumbnailNavigPixmap(*pix, source->selectedDocument(), i);
@ -154,6 +155,7 @@ void UBDocumentNavigator::updateSpecificThumbnail(int iPage)
mScene->addItem(newItem); mScene->addItem(newItem);
mThumbsWithLabels[iPage].setThumbnail(newItem); mThumbsWithLabels[iPage].setThumbnail(newItem);
delete oldItem; delete oldItem;
oldItem = NULL;
} }
} }

Loading…
Cancel
Save