summaryrefslogtreecommitdiff
path: root/abaddon.cpp
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2021-05-28 04:04:06 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2021-05-28 04:04:06 -0400
commitc43b39fe707ea0228ae4c68e94c2cbe106f55e24 (patch)
treeb6827dd4682ae8bc559f578185c5d4696560fa7d /abaddon.cpp
parent484e21e693d1a5d25c1ef959ba531bc584ef4eba (diff)
downloadabaddon-portaudio-c43b39fe707ea0228ae4c68e94c2cbe106f55e24.tar.gz
abaddon-portaudio-c43b39fe707ea0228ae4c68e94c2cbe106f55e24.zip
add some workarounds/fixes for css stuff
adds a separate css file registered with a lower priority to allow for application-wide css while allowing the main css file to override more general selectors
Diffstat (limited to 'abaddon.cpp')
-rw-r--r--abaddon.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/abaddon.cpp b/abaddon.cpp
index 36033eb..995054d 100644
--- a/abaddon.cpp
+++ b/abaddon.cpp
@@ -68,7 +68,6 @@ Abaddon &Abaddon::Get() {
int Abaddon::StartGTK() {
m_gtk_app = Gtk::Application::create("com.github.uowuo.abaddon");
- // tmp css stuff
m_css_provider = Gtk::CssProvider::create();
m_css_provider->signal_parsing_error().connect([this](const Glib::RefPtr<const Gtk::CssSection> &section, const Glib::Error &error) {
Gtk::MessageDialog dlg(*m_main_window, "css failed parsing (" + error.what() + ")", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true);
@@ -76,6 +75,13 @@ int Abaddon::StartGTK() {
dlg.run();
});
+ m_css_low_provider = Gtk::CssProvider::create();
+ m_css_low_provider->signal_parsing_error().connect([this](const Glib::RefPtr<const Gtk::CssSection> &section, const Glib::Error &error) {
+ Gtk::MessageDialog dlg(*m_main_window, "low-priority css failed parsing (" + error.what() + ")", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true);
+ dlg.set_position(Gtk::WIN_POS_CENTER);
+ dlg.run();
+ });
+
m_main_window = std::make_unique<MainWindow>();
m_main_window->set_title(APP_TITLE);
m_main_window->UpdateComponents();
@@ -630,6 +636,10 @@ void Abaddon::ActionReloadCSS() {
Gtk::StyleContext::remove_provider_for_screen(Gdk::Screen::get_default(), m_css_provider);
m_css_provider->load_from_path(m_settings.GetMainCSS());
Gtk::StyleContext::add_provider_for_screen(Gdk::Screen::get_default(), m_css_provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+
+ Gtk::StyleContext::remove_provider_for_screen(Gdk::Screen::get_default(), m_css_low_provider);
+ m_css_low_provider->load_from_path("./css/application-low-priority.css");
+ Gtk::StyleContext::add_provider_for_screen(Gdk::Screen::get_default(), m_css_low_provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION - 1);
} catch (Glib::Error &e) {
Gtk::MessageDialog dlg(*m_main_window, "css failed to load (" + e.what() + ")", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true);
dlg.set_position(Gtk::WIN_POS_CENTER);