diff main/MainWindow.cpp @ 2466:2197ba438a3f background-mode

Add support for picking up overview colour from desktop theme
author Chris Cannam
date Fri, 24 Jan 2020 12:44:49 +0000
parents 9b5b4e02f691
children 169cc70492bb
line wrap: on
line diff
--- a/main/MainWindow.cpp	Fri Jan 24 12:44:37 2020 +0000
+++ b/main/MainWindow.cpp	Fri Jan 24 12:44:49 2020 +0000
@@ -196,7 +196,7 @@
     cdb->setUseDarkBackground(cdb->addColour(Qt::white, tr("White")), true);
     cdb->setUseDarkBackground(cdb->addColour(Qt::red, tr("Bright Red")), true);
     cdb->setUseDarkBackground(cdb->addColour(QColor(30, 150, 255), tr("Bright Blue")), true);
-    cdb->setUseDarkBackground(cdb->addColour(Qt::green, tr("Bright Green")), true);
+    cdb->setUseDarkBackground(cdb->addColour(QColor(20, 255, 90), tr("Bright Green")), true);
     cdb->setUseDarkBackground(cdb->addColour(QColor(225, 74, 255), tr("Bright Purple")), true);
     cdb->setUseDarkBackground(cdb->addColour(QColor(255, 188, 80), tr("Bright Orange")), true);
 
@@ -3913,17 +3913,27 @@
 {
     QSettings settings;
     settings.beginGroup("Preferences");
-    QString defaultColourName(tr("Green"));
-    if (m_viewManager && m_viewManager->getGlobalDarkBackground()) {
-        defaultColourName = tr("Bright Green");
-    }
+
+    bool haveDarkBackground = (m_viewManager &&
+                               m_viewManager->getGlobalDarkBackground());
+    QColor highlight = QApplication::palette().color(QPalette::Highlight);
     ColourDatabase *cdb = ColourDatabase::getInstance();
+    int nearestIndex = cdb->getNearbyColourIndex
+        (highlight,
+         haveDarkBackground ?
+         ColourDatabase::WithDarkBackground :
+         ColourDatabase::WithLightBackground);
+    QString defaultColourName = cdb->getColourName(nearestIndex);
+    
     QColor colour = QColor
         (settings.value("overview-colour",
                         cdb->getColour(defaultColourName).name()).toString());
     settings.endGroup();
 
     int index = cdb->getColourIndex(colour);
+
+    SVCERR << "MainWindow::coloursChanged: haveDarkBackground = " << haveDarkBackground << ", highlight = " << highlight.name() << ", nearestIndex = " << nearestIndex << ", defaultColourName = " << defaultColourName << ", colour = " << colour.name() << ", index = " << index << endl;
+
     if (index >= 0) {
         m_panLayer->setBaseColour(index);
     }