From 812e3b5f0318c435192c387028c2f6cd3c70f35f Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Wed, 29 Dec 2021 06:01:20 +0100 Subject: [PATCH] Reduce allocations required for the palette --- src/ui/Theme.cpp | 74 ++++++++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 34 deletions(-) diff --git a/src/ui/Theme.cpp b/src/ui/Theme.cpp index 318f93c1..6301735e 100644 --- a/src/ui/Theme.cpp +++ b/src/ui/Theme.cpp @@ -12,42 +12,48 @@ Theme::paletteFromTheme(std::string_view theme) [[maybe_unused]] static auto meta = qRegisterMetaType("Theme"); static QPalette original; if (theme == "light") { - QPalette lightActive( - /*windowText*/ QColor(0x33, 0x33, 0x33), - /*button*/ QColor(Qt::GlobalColor::white), - /*light*/ QColor(0xef, 0xef, 0xef), - /*dark*/ QColor(70, 77, 93), - /*mid*/ QColor(220, 220, 220), - /*text*/ QColor(0x33, 0x33, 0x33), - /*bright_text*/ QColor(0xf2, 0xf5, 0xf8), - /*base*/ QColor(Qt::GlobalColor::white), - /*window*/ QColor(Qt::GlobalColor::white)); - lightActive.setColor(QPalette::AlternateBase, QColor(0xee, 0xee, 0xee)); - lightActive.setColor(QPalette::Highlight, QColor(0x38, 0xa3, 0xd8)); - lightActive.setColor(QPalette::HighlightedText, QColor(0xf4, 0xf4, 0xf5)); - lightActive.setColor(QPalette::ToolTipBase, lightActive.base().color()); - lightActive.setColor(QPalette::ToolTipText, lightActive.text().color()); - lightActive.setColor(QPalette::Link, QColor(0x00, 0x77, 0xb5)); - lightActive.setColor(QPalette::ButtonText, QColor(0x55, 0x54, 0x59)); + static QPalette lightActive = [] { + QPalette lightActive( + /*windowText*/ QColor(0x33, 0x33, 0x33), + /*button*/ QColor(Qt::GlobalColor::white), + /*light*/ QColor(0xef, 0xef, 0xef), + /*dark*/ QColor(70, 77, 93), + /*mid*/ QColor(220, 220, 220), + /*text*/ QColor(0x33, 0x33, 0x33), + /*bright_text*/ QColor(0xf2, 0xf5, 0xf8), + /*base*/ QColor(Qt::GlobalColor::white), + /*window*/ QColor(Qt::GlobalColor::white)); + lightActive.setColor(QPalette::AlternateBase, QColor(0xee, 0xee, 0xee)); + lightActive.setColor(QPalette::Highlight, QColor(0x38, 0xa3, 0xd8)); + lightActive.setColor(QPalette::HighlightedText, QColor(0xf4, 0xf4, 0xf5)); + lightActive.setColor(QPalette::ToolTipBase, lightActive.base().color()); + lightActive.setColor(QPalette::ToolTipText, lightActive.text().color()); + lightActive.setColor(QPalette::Link, QColor(0x00, 0x77, 0xb5)); + lightActive.setColor(QPalette::ButtonText, QColor(0x55, 0x54, 0x59)); + return lightActive; + }(); return lightActive; } else if (theme == "dark") { - QPalette darkActive( - /*windowText*/ QColor(0xca, 0xcc, 0xd1), - /*button*/ QColor(Qt::GlobalColor::white), - /*light*/ QColor(0xca, 0xcc, 0xd1), - /*dark*/ QColor(60, 70, 77), - /*mid*/ QColor(0x20, 0x22, 0x28), - /*text*/ QColor(0xca, 0xcc, 0xd1), - /*bright_text*/ QColor(0xf4, 0xf5, 0xf8), - /*base*/ QColor(0x20, 0x22, 0x28), - /*window*/ QColor(0x2d, 0x31, 0x39)); - darkActive.setColor(QPalette::AlternateBase, QColor(0x2d, 0x31, 0x39)); - darkActive.setColor(QPalette::Highlight, QColor(0x38, 0xa3, 0xd8)); - darkActive.setColor(QPalette::HighlightedText, QColor(0xf4, 0xf5, 0xf8)); - darkActive.setColor(QPalette::ToolTipBase, darkActive.base().color()); - darkActive.setColor(QPalette::ToolTipText, darkActive.text().color()); - darkActive.setColor(QPalette::Link, QColor(0x38, 0xa3, 0xd8)); - darkActive.setColor(QPalette::ButtonText, QColor(0x82, 0x82, 0x84)); + static QPalette darkActive = [] { + QPalette darkActive( + /*windowText*/ QColor(0xca, 0xcc, 0xd1), + /*button*/ QColor(Qt::GlobalColor::white), + /*light*/ QColor(0xca, 0xcc, 0xd1), + /*dark*/ QColor(60, 70, 77), + /*mid*/ QColor(0x20, 0x22, 0x28), + /*text*/ QColor(0xca, 0xcc, 0xd1), + /*bright_text*/ QColor(0xf4, 0xf5, 0xf8), + /*base*/ QColor(0x20, 0x22, 0x28), + /*window*/ QColor(0x2d, 0x31, 0x39)); + darkActive.setColor(QPalette::AlternateBase, QColor(0x2d, 0x31, 0x39)); + darkActive.setColor(QPalette::Highlight, QColor(0x38, 0xa3, 0xd8)); + darkActive.setColor(QPalette::HighlightedText, QColor(0xf4, 0xf5, 0xf8)); + darkActive.setColor(QPalette::ToolTipBase, darkActive.base().color()); + darkActive.setColor(QPalette::ToolTipText, darkActive.text().color()); + darkActive.setColor(QPalette::Link, QColor(0x38, 0xa3, 0xd8)); + darkActive.setColor(QPalette::ButtonText, QColor(0x82, 0x82, 0x84)); + return darkActive; + }(); return darkActive; } else { return original;