From 7cbcc16156dd6ab4786d466ea39857bde4bdd2c7 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Wed, 20 Sep 2017 13:04:02 +0200 Subject: Fixed bug with starting up if the local socket wasn't cleaned up --- src/browser.cpp | 45 +++++++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 20 deletions(-) (limited to 'src/browser.cpp') diff --git a/src/browser.cpp b/src/browser.cpp index 897b0ad..c01c165 100644 --- a/src/browser.cpp +++ b/src/browser.cpp @@ -30,15 +30,12 @@ Browser::Browser(int &argc, char *argv[]) : SingleApplication(argc, argv) { - m_settings = nullptr; - - m_networkAccessManager = nullptr; - m_urlRequestInterceptor = nullptr; - m_bookmarksManager = nullptr; - m_downloadManager = nullptr; - m_blocklistManager = nullptr; - - m_plugin = nullptr; + setApplicationName("smolbote"); +#ifdef GIT_VERSION + setApplicationVersion(GIT_VERSION); +#else + setApplicationVersion("1.0.0"); +#endif } Browser::~Browser() @@ -208,23 +205,27 @@ void Browser::loadSettings(const QString &path) #endif } -MainWindow *Browser::mainWindow() +MainWindow *Browser::activeWindow() { - if(m_windows.isEmpty()) { + if(m_windows.empty()) { addWindow(new MainWindow()); } - return m_windows.first(); + + for(auto it = m_windows.cbegin(); it != m_windows.cend(); it++) { + if(it->data()->isActiveWindow()) { + return it->data(); + } + } + return m_windows.first().data(); } void Browser::addWindow(MainWindow *window) { - if(m_windows.contains(window)) { - return; - } + Q_ASSERT(window != nullptr); - m_windows.append(window); - connect(window, &QObject::destroyed, [this, window]() { - this->removeWindow(window); + m_windows.append(QPointer(window)); + connect(window, &QObject::destroyed, [this]() { + this->clean(); }); window->show(); @@ -237,9 +238,13 @@ MainWindow *Browser::addWindow(const QStringList params) return w; } -void Browser::removeWindow(MainWindow *window) +void Browser::clean() { - m_windows.removeOne(window); + for(int i = m_windows.size(); i >= 0; i--) { + if(m_windows[i].isNull()) { + m_windows.removeAt(i); + } + } } WebEngineProfile* Browser::profile(const QString name) -- cgit v1.2.1