From 4b2fd86fdd9da4e16a260d9d09f26152743ffbf2 Mon Sep 17 00:00:00 2001 From: nowrep Date: Thu, 31 Jan 2013 02:08:28 +0100 Subject: [PATCH] Add new option "Ignore system colors" for dark themes. It will set default background of html element to white. However, this may break some sites, so let's just make this optional. --- src/lib/app/mainapplication.cpp | 22 ++++++++++++++++------ src/lib/app/mainapplication.h | 2 +- src/lib/preferences/preferences.cpp | 2 ++ src/lib/preferences/preferences.ui | 11 +++++++++-- 4 files changed, 28 insertions(+), 9 deletions(-) diff --git a/src/lib/app/mainapplication.cpp b/src/lib/app/mainapplication.cpp index 8eaf9f3f1..7edac1fc5 100644 --- a/src/lib/app/mainapplication.cpp +++ b/src/lib/app/mainapplication.cpp @@ -399,8 +399,10 @@ void MainApplication::loadSettings() m_websettings->setAttribute(QWebSettings::JavascriptCanCloseWindows, settings.value("allowJavaScriptCloseWindow", false).toBool()); #endif + const QUrl &styleSheet = userStyleSheet(settings.value("userStyleSheet", QString()).toString(), + settings.value("ignoreSystemColors", false).toBool()); + m_websettings->setUserStyleSheetUrl(styleSheet); setWheelScrollLines(settings.value("wheelScrollLines", wheelScrollLines()).toInt()); - m_websettings->setUserStyleSheetUrl(userStyleSheet(settings.value("userStyleSheet", QString()).toString())); settings.endGroup(); settings.beginGroup("Browser-Fonts"); @@ -834,7 +836,8 @@ void MainApplication::reloadUserStyleSheet() { Settings settings; settings.beginGroup("Web-Browser-Settings"); - m_websettings->setUserStyleSheetUrl(userStyleSheet(settings.value("userStyleSheet", QString()).toString())); + m_websettings->setUserStyleSheetUrl(userStyleSheet(settings.value("userStyleSheet", QString()).toString(), + settings.value("ignoreSystemColors", false).toBool())); settings.endGroup(); } @@ -880,11 +883,18 @@ RegisterQAppAssociation* MainApplication::associationManager() } #endif -QUrl MainApplication::userStyleSheet(const QString &filePath) const +QUrl MainApplication::userStyleSheet(const QString &filePath, bool ignoreSystemColors) const { - // Set default white background for all sites - // Fixes issue with dark themes when sites don't set background - QString userStyle = "html{background-color:white;}"; + QString userStyle; + + if (ignoreSystemColors) { + // Set default white background for all sites + // Fixes issue with dark themes when sites don't set background + // But it also brings issues with background of iframes that assumes + // background will by default will be transparent + userStyle += "html{background-color:white;}"; + } + userStyle += AdBlockManager::instance()->elementHidingRules() + "{ display:none !important;}"; QFile file(filePath); diff --git a/src/lib/app/mainapplication.h b/src/lib/app/mainapplication.h index 7925ed653..890be4cd7 100644 --- a/src/lib/app/mainapplication.h +++ b/src/lib/app/mainapplication.h @@ -148,7 +148,7 @@ private: void translateApp(); void restoreOtherWindows(); - QUrl userStyleSheet(const QString &filePath) const; + QUrl userStyleSheet(const QString &filePath, bool ignoreSystemColors) const; CookieManager* m_cookiemanager; BrowsingLibrary* m_browsingLibrary; diff --git a/src/lib/preferences/preferences.cpp b/src/lib/preferences/preferences.cpp index 2aa981ae6..594c568d2 100644 --- a/src/lib/preferences/preferences.cpp +++ b/src/lib/preferences/preferences.cpp @@ -253,6 +253,7 @@ Preferences::Preferences(QupZilla* mainClass, QWidget* parent) ui->wheelScroll->setValue(settings.value("wheelScrollLines", qApp->wheelScrollLines()).toInt()); ui->defaultZoom->setValue(settings.value("DefaultZoom", 100).toInt()); ui->xssAuditing->setChecked(settings.value("XSSAuditing", false).toBool()); + ui->ignoreSystemColors->setChecked(settings.value("ignoreSystemColors", false).toBool()); //Cache ui->pagesInCache->setValue(settings.value("maximumCachedPages", 3).toInt()); @@ -898,6 +899,7 @@ void Preferences::saveSettings() settings.setValue("LoadTabsOnActivation", ui->dontLoadTabsUntilSelected->isChecked()); settings.setValue("DefaultZoom", ui->defaultZoom->value()); settings.setValue("XSSAuditing", ui->xssAuditing->isChecked()); + settings.setValue("ignoreSystemColors", ui->ignoreSystemColors->isChecked()); #ifdef Q_OS_WIN settings.setValue("CheckDefaultBrowser", ui->checkDefaultBrowser->isChecked()); #endif diff --git a/src/lib/preferences/preferences.ui b/src/lib/preferences/preferences.ui index e1d1b11a9..c301e4594 100644 --- a/src/lib/preferences/preferences.ui +++ b/src/lib/preferences/preferences.ui @@ -596,11 +596,11 @@ - <b>Background<b/> + <b>Colors<b/> - + Qt::Vertical @@ -641,6 +641,13 @@ + + + + Ignore system colors (for dark themes) + + +