mirror of
https://github.com/YACReader/yacreader
synced 2025-06-04 01:28:55 -04:00
Keep all comics views in memory, views are going to be created lazily. This should fix the issues with QML context deallocating objects between views switching.
This commit is contained in:
parent
4ef185c885
commit
6c76aaffc8
@ -477,10 +477,11 @@ void GridComicsView::closeEvent(QCloseEvent *event)
|
||||
toolbar->removeAction(toolBarStretchAction);
|
||||
toolbar->removeAction(coverSizeSliderAction);
|
||||
|
||||
QObject *object = view->rootObject();
|
||||
/*QObject *object = view->rootObject();
|
||||
QMetaObject::invokeMethod(object, "exit");
|
||||
container->close();
|
||||
view->close();
|
||||
view->close();*/
|
||||
|
||||
event->accept();
|
||||
ComicsView::closeEvent(event);
|
||||
|
||||
|
@ -1267,7 +1267,6 @@ void LibraryWindow::loadLibrary(const QString & name)
|
||||
|
||||
void LibraryWindow::loadCoversFromCurrentModel()
|
||||
{
|
||||
comicsViewsManager->comicsView->setModel(new ComicModel()); //TODO fix this
|
||||
comicsViewsManager->comicsView->setModel(comicsModel);
|
||||
}
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
#include "options_dialog.h"
|
||||
|
||||
YACReaderComicsViewsManager::YACReaderComicsViewsManager(QSettings *settings, LibraryWindow *parent)
|
||||
: QObject(parent), libraryWindow(parent)
|
||||
: QObject(parent), libraryWindow(parent), classicComicsView(nullptr), gridComicsView(nullptr), infoComicsView(nullptr)
|
||||
{
|
||||
comicsViewStack = new QStackedWidget();
|
||||
|
||||
@ -154,7 +154,7 @@ void YACReaderComicsViewsManager::switchToComicsView(ComicsView * from, ComicsVi
|
||||
comicsViewStack->removeWidget(from);
|
||||
comicsViewStack->addWidget(comicsView);
|
||||
|
||||
delete from;
|
||||
//delete from; No need to delete the previews view, because all views are going to be kept in memory
|
||||
|
||||
//load content into current view
|
||||
libraryWindow->loadCoversFromCurrentModel();
|
||||
@ -182,7 +182,10 @@ void YACReaderComicsViewsManager::_toggleComicsView()
|
||||
#ifdef Q_OS_MAC
|
||||
libraryWindow->libraryToolBar->updateViewSelectorIcon(icoViewsButton);
|
||||
#endif
|
||||
switchToComicsView(classicComicsView, gridComicsView = new GridComicsView());
|
||||
if(gridComicsView == nullptr)
|
||||
gridComicsView = new GridComicsView();
|
||||
|
||||
switchToComicsView(classicComicsView, gridComicsView);
|
||||
connect(libraryWindow->optionsDialog, SIGNAL(optionsChanged()), gridComicsView, SLOT(updateBackgroundConfig()));
|
||||
comicsViewStatus = Grid;
|
||||
|
||||
@ -197,7 +200,10 @@ void YACReaderComicsViewsManager::_toggleComicsView()
|
||||
#ifdef Q_OS_MAC
|
||||
libraryWindow->libraryToolBar->updateViewSelectorIcon(icoViewsButton);
|
||||
#endif
|
||||
switchToComicsView(gridComicsView, infoComicsView = new InfoComicsView());
|
||||
if(infoComicsView == nullptr)
|
||||
infoComicsView = new InfoComicsView();
|
||||
|
||||
switchToComicsView(gridComicsView, infoComicsView);
|
||||
comicsViewStatus = Info;
|
||||
|
||||
break;
|
||||
@ -211,7 +217,10 @@ void YACReaderComicsViewsManager::_toggleComicsView()
|
||||
#ifdef Q_OS_MAC
|
||||
libraryWindow->libraryToolBar->updateViewSelectorIcon(icoViewsButton);
|
||||
#endif
|
||||
switchToComicsView(infoComicsView, classicComicsView = new ClassicComicsView());
|
||||
if(classicComicsView == nullptr)
|
||||
classicComicsView = new ClassicComicsView();
|
||||
|
||||
switchToComicsView(infoComicsView, classicComicsView);
|
||||
comicsViewStatus = Flow;
|
||||
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user