diff options
Diffstat (limited to 'src/frontend')
-rw-r--r-- | src/frontend/btaboutdialog.cpp | 6 | ||||
-rw-r--r-- | src/frontend/btmoduleindexdialog.cpp | 11 | ||||
-rw-r--r-- | src/frontend/btwebenginepage.cpp | 1 | ||||
-rw-r--r-- | src/frontend/display/bthtmlreaddisplay.cpp | 2 | ||||
-rw-r--r-- | src/frontend/displaywindow/cbiblereadwindow.cpp | 7 | ||||
-rw-r--r-- | src/frontend/displaywindow/cdisplaywindow.cpp | 17 | ||||
-rw-r--r-- | src/frontend/displaywindow/cplainwritewindow.cpp | 5 | ||||
-rw-r--r-- | src/frontend/keychooser/versekeychooser/btbiblekeywidget.cpp | 5 | ||||
-rw-r--r-- | src/frontend/searchdialog/csearchdialog.cpp | 11 | ||||
-rw-r--r-- | src/frontend/settingsdialogs/btstandardworkstab.cpp | 6 |
10 files changed, 57 insertions, 14 deletions
diff --git a/src/frontend/btaboutdialog.cpp b/src/frontend/btaboutdialog.cpp index 65d9b34..aa6ebbe 100644 --- a/src/frontend/btaboutdialog.cpp +++ b/src/frontend/btaboutdialog.cpp @@ -256,7 +256,7 @@ void BtAboutDialog::retranslateQtTab() { content += "</p><p>"; content += tr("Qt is a cross-platform application and UI framework, created with C++ " "language. It has been released under the LGPL license."); - content += " " MAKE_LINK(content, "about:qt", tr("More info...")) "</p>"; + content += " " MAKE_LINK(content, "http://qt", tr("More info...")) "</p>"; m_qtTab->setHtml(MAKE_HTML(m_qtTab, content)); } @@ -284,10 +284,8 @@ void BtAboutDialog::retranslateLicenceTab() { } void BtAboutDialog::linkClicked(const QUrl &url) { - if (url.scheme() == "about") { - if (url.path() == "qt") { + if (url.host() == "qt") { qApp->aboutQt(); - } } else { QDesktopServices::openUrl(url); } diff --git a/src/frontend/btmoduleindexdialog.cpp b/src/frontend/btmoduleindexdialog.cpp index 8b70541..370ce42 100644 --- a/src/frontend/btmoduleindexdialog.cpp +++ b/src/frontend/btmoduleindexdialog.cpp @@ -64,10 +64,19 @@ bool BtModuleIndexDialog::indexAllModulesPrivate(const QList<CSwordModuleInfo*> try { m->buildIndex(); } catch (...) { + QString msg; + try { + throw; + } catch (std::exception const & e) { + msg = e.what(); + } catch (...) { + msg = tr("<UNKNOWN EXCEPTION>"); + } + message::showWarning(this, tr("Indexing aborted"), tr("An internal error occurred while building " - "the index.")); + "the index.") + "<br/><br/>" + msg); success = false; } diff --git a/src/frontend/btwebenginepage.cpp b/src/frontend/btwebenginepage.cpp index e2fd666..c818789 100644 --- a/src/frontend/btwebenginepage.cpp +++ b/src/frontend/btwebenginepage.cpp @@ -69,6 +69,7 @@ void BtWebEnginePage::javaScriptConsoleMessage( BtWebEnginePage::BtWebEnginePage(QObject *parent) :QWebPage(parent) { settings()->setAttribute(QWebSettings::JavascriptEnabled, true); + setLinkDelegationPolicy(QWebPage::DelegateAllLinks); } void BtWebEnginePage::addJavaScriptObject(const QString &name, QObject *object) { diff --git a/src/frontend/display/bthtmlreaddisplay.cpp b/src/frontend/display/bthtmlreaddisplay.cpp index eace51f..fe1ae8c 100644 --- a/src/frontend/display/bthtmlreaddisplay.cpp +++ b/src/frontend/display/bthtmlreaddisplay.cpp @@ -244,7 +244,7 @@ void BtHtmlReadDisplay::setText( const QString& newText ) { #endif // Send text to the html viewer - m_view->setHtml(jsText); + m_view->setHtml(jsText, QUrl("file://")); this->currentSource = jsText; } diff --git a/src/frontend/displaywindow/cbiblereadwindow.cpp b/src/frontend/displaywindow/cbiblereadwindow.cpp index 7789953..b9f8f20 100644 --- a/src/frontend/displaywindow/cbiblereadwindow.cpp +++ b/src/frontend/displaywindow/cbiblereadwindow.cpp @@ -408,12 +408,19 @@ void CBibleReadWindow::lookupSwordKey( CSwordKey* newKey ) { } void CBibleReadWindow::syncWindows() { + QMdiSubWindow * activeWindow = mdi()->activeSubWindow(); Q_FOREACH(QMdiSubWindow * const subWindow, mdi()->subWindowList()) { CDisplayWindow* w = dynamic_cast<CDisplayWindow*>(subWindow->widget()); if (w && w->syncAllowed()) { w->lookupKey( key()->key() ); } } + + // Fix problem with QWebEngineView::setHtml + // It set the focus of any updated window causing + // it to be the active window. + if (mdi()->activeSubWindow() != activeWindow) + mdi()->setActiveSubWindow(activeWindow); } void CBibleReadWindow::setupMainWindowToolBars() { diff --git a/src/frontend/displaywindow/cdisplaywindow.cpp b/src/frontend/displaywindow/cdisplaywindow.cpp index 1285205..ba8ec18 100644 --- a/src/frontend/displaywindow/cdisplaywindow.cpp +++ b/src/frontend/displaywindow/cdisplaywindow.cpp @@ -57,7 +57,12 @@ CDisplayWindow::CDisplayWindow(const QList<CSwordModuleInfo *> & modules, CMDIAr m_popupMenu(nullptr), m_displayWidget(nullptr), m_history(nullptr) { - setAttribute(Qt::WA_DeleteOnClose); //we want to destroy this window when it is closed + + // Cannot delete on close. QMdiSubWindow and this window work + // as pairs. They must be deleted in a specific order. + // QMdiSubWindow handles this procedure. + //setAttribute(Qt::WA_DeleteOnClose); + m_actionCollection = new BtActionCollection(this); setModules(modules); @@ -288,7 +293,7 @@ void CDisplayWindow::reload(CSwordBackend::SetupChangedReason) { lookup(); - m_actionCollection->readShortcuts("DisplayWindow shortcuts"); + m_actionCollection->readShortcuts("Displaywindow shortcuts"); m_actionCollection->readShortcuts("Readwindow shortcuts"); emit sigModuleListSet(m_modules); } @@ -583,6 +588,12 @@ void CDisplayWindow::printAnchorWithText() { } void CDisplayWindow::setFocusKeyChooser() { - keyChooser()->setFocus(); + if (btConfig().sessionValue<bool>("GUI/showToolbarsInEachWindow", true)) { + keyChooser()->setFocus(); + } else { + CKeyChooser* mainWinKeyChooser = btMainWindow()->keyChooser(); + if (mainWinKeyChooser) + mainWinKeyChooser->setFocus(); + } } diff --git a/src/frontend/displaywindow/cplainwritewindow.cpp b/src/frontend/displaywindow/cplainwritewindow.cpp index b51339e..8d960db 100644 --- a/src/frontend/displaywindow/cplainwritewindow.cpp +++ b/src/frontend/displaywindow/cplainwritewindow.cpp @@ -263,8 +263,10 @@ void CPlainWriteWindow::insertKeyboardActions( BtActionCollection* const a) { } void CPlainWriteWindow::saveCurrentText() { - if (key()) + if (key()) { + m_writeDisplay->setModified(false); saveCurrentText(key()->key()); + } } @@ -303,6 +305,7 @@ void CPlainWriteWindow::beforeKeyChange() { switch (message::showQuestion( this, tr("Save Text?"), tr("Save changed text?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) ) { case QMessageBox::Yes: { //save the changes + m_writeDisplay->setModified(false); // Do before saveCurrentText to prevent recursion saveCurrentText( thisWindowsKey ); break; } diff --git a/src/frontend/keychooser/versekeychooser/btbiblekeywidget.cpp b/src/frontend/keychooser/versekeychooser/btbiblekeywidget.cpp index 98cd47f..8b5d02e 100644 --- a/src/frontend/keychooser/versekeychooser/btbiblekeywidget.cpp +++ b/src/frontend/keychooser/versekeychooser/btbiblekeywidget.cpp @@ -83,7 +83,10 @@ BtBibleKeyWidget::BtBibleKeyWidget(const CSwordBibleModuleInfo *mod, setTabOrder(m_textbox, nullptr); - m_dropDownButtons = new QWidget(nullptr); + + // Using "this" instead of "nullptr" works around a Qt 5.9 bug, QTBUG-61213 + m_dropDownButtons = new QWidget(this); + m_dropDownButtons->setWindowFlags(Qt::Popup); m_dropDownButtons->setAttribute(Qt::WA_WindowPropagation); m_dropDownButtons->setCursor(Qt::ArrowCursor); diff --git a/src/frontend/searchdialog/csearchdialog.cpp b/src/frontend/searchdialog/csearchdialog.cpp index ccefe9f..1057b43 100644 --- a/src/frontend/searchdialog/csearchdialog.cpp +++ b/src/frontend/searchdialog/csearchdialog.cpp @@ -168,10 +168,19 @@ void CSearchDialog::startSearch() { try { m_searcher.startSearch(); } catch (...) { + QString msg; + try { + throw; + } catch (std::exception const & e) { + msg = e.what(); + } catch (...) { + msg = tr("<UNKNOWN EXCEPTION>"); + } + message::showWarning(this, tr("Search aborted"), tr("An internal error occurred while executing " - "your search.")); + "your search.") + "<br/><br/>" + msg); // Re-enable the dialog: setEnabled(true); setCursor(Qt::ArrowCursor); diff --git a/src/frontend/settingsdialogs/btstandardworkstab.cpp b/src/frontend/settingsdialogs/btstandardworkstab.cpp index 1190aa6..62c6278 100644 --- a/src/frontend/settingsdialogs/btstandardworkstab.cpp +++ b/src/frontend/settingsdialogs/btstandardworkstab.cpp @@ -15,6 +15,7 @@ #include <QLabel> #include <QVBoxLayout> #include "backend/config/btconfig.h" +#include "backend/drivers/cswordlexiconmoduleinfo.h" #include "backend/managers/cswordbackend.h" #include "frontend/settingsdialogs/cswordsettings.h" #include "util/tool.h" @@ -72,11 +73,12 @@ BtStandardWorksTab::BtStandardWorksTab(CSwordSettingsPage *parent) break; case CSwordModuleInfo::Lexicon: { bool inserted = false; - if (m->has(CSwordModuleInfo::HebrewDef)) { + auto lexModule = qobject_cast<CSwordLexiconModuleInfo const *>(m); + if (m->has(CSwordModuleInfo::HebrewDef) && lexModule->hasStrongsKeys()) { m_standardHebrewStrongsLexiconCombo->addItem(modDescript); inserted = true; } - if (m->has(CSwordModuleInfo::GreekDef)) { + if (m->has(CSwordModuleInfo::GreekDef) && lexModule->hasStrongsKeys()) { m_standardGreekStrongsLexiconCombo->addItem(modDescript); inserted = true; } |