diff options
Diffstat (limited to 'src/inkscape.cpp')
| -rw-r--r-- | src/inkscape.cpp | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/src/inkscape.cpp b/src/inkscape.cpp index b2f032d47..798f4b487 100644 --- a/src/inkscape.cpp +++ b/src/inkscape.cpp @@ -457,10 +457,31 @@ Application::Application(const char* argv, bool use_gui) : /* Load the preferences and menus */ Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - g_object_set(gtk_settings_get_default(), "gtk-theme-name", prefs->getString("/theme/gtkTheme").c_str(), NULL); - g_object_set(gtk_settings_get_default(), "gtk-icon-theme-name", prefs->getString("/theme/iconTheme").c_str(), NULL); - g_object_set(gtk_settings_get_default(), "gtk-application-prefer-dark-theme", - prefs->getBool("/theme/darkTheme", false), NULL); + GtkSettings * settings = gtk_settings_get_default(); + const gchar * gtkThemeName; + g_object_get(settings ,"gtk-theme-name", >kThemeName, NULL); + const gchar * gtkIconThemeName; + g_object_get(settings ,"gtk-icon-theme-name", >kIconThemeName, NULL); + prefs->setString("/theme/defaultIconTheme", Glib::ustring(gtkIconThemeName)); + bool gtkApplicationPreferDarkTheme; + g_object_get(settings ,"gtk-application-prefer-dark-theme", >kApplicationPreferDarkTheme, NULL); + if (prefs->getString("/theme/gtkTheme") != "") { + g_object_set(settings, "gtk-theme-name", prefs->getString("/theme/gtkTheme").c_str(), NULL); + } else { + prefs->setString("/theme/gtkTheme", Glib::ustring(gtkThemeName)); + } + + if (prefs->getString("/theme/iconTheme") != "") { + g_object_set(settings, "gtk-icon-theme-name", prefs->getString("/theme/iconTheme").c_str(), NULL); + } else { + Glib::ustring defaulticontheme = prefs->getString("/theme/defaultIconTheme"); + if(defaulticontheme == "Adwaita") { + defaulticontheme = "hicolor"; + } + prefs->setString("/theme/iconTheme", defaulticontheme); + } + g_object_set(settings, "gtk-application-prefer-dark-theme", + prefs->getBool("/theme/darkTheme", gtkApplicationPreferDarkTheme), NULL); InkErrorHandler* handler = new InkErrorHandler(use_gui); prefs->setErrorHandler(handler); { |
