summaryrefslogtreecommitdiffstats
path: root/src/inkscape.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/inkscape.cpp')
-rw-r--r--src/inkscape.cpp29
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", &gtkThemeName, NULL);
+ const gchar * gtkIconThemeName;
+ g_object_get(settings ,"gtk-icon-theme-name", &gtkIconThemeName, NULL);
+ prefs->setString("/theme/defaultIconTheme", Glib::ustring(gtkIconThemeName));
+ bool gtkApplicationPreferDarkTheme;
+ g_object_get(settings ,"gtk-application-prefer-dark-theme", &gtkApplicationPreferDarkTheme, 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);
{