summaryrefslogtreecommitdiff
path: root/src/frontend
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend')
-rw-r--r--src/frontend/btaboutdialog.cpp6
-rw-r--r--src/frontend/btmoduleindexdialog.cpp11
-rw-r--r--src/frontend/btwebenginepage.cpp1
-rw-r--r--src/frontend/display/bthtmlreaddisplay.cpp2
-rw-r--r--src/frontend/displaywindow/cbiblereadwindow.cpp7
-rw-r--r--src/frontend/displaywindow/cdisplaywindow.cpp17
-rw-r--r--src/frontend/displaywindow/cplainwritewindow.cpp5
-rw-r--r--src/frontend/keychooser/versekeychooser/btbiblekeywidget.cpp5
-rw-r--r--src/frontend/searchdialog/csearchdialog.cpp11
-rw-r--r--src/frontend/settingsdialogs/btstandardworkstab.cpp6
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;
}