summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/inkscape.cpp29
-rw-r--r--src/main.cpp14
-rw-r--r--src/ui/dialog/inkscape-preferences.cpp77
-rw-r--r--src/ui/interface.cpp3
4 files changed, 34 insertions, 89 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);
{
diff --git a/src/main.cpp b/src/main.cpp
index d9a1d37df..04fa4ec37 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -621,17 +621,17 @@ static void set_extensions_env()
static void set_datadir_env()
{
gchar const *xgd = g_getenv("XDG_DATA_DIRS");
- Glib::ustring datadir = get_datadir_path();
- datadir += ":";
- datadir += INKSCAPE_DATADIR;
-#ifdef WIN32
- datadir += g_win32_locale_filename_from_utf8("/inkscape");
+#ifdef _WIN32
+ Glib::ustring pathwraper = "'";
#else
- datadir += "/inkscape";
+ Glib::ustring pathwraper = "";
#endif
+ Glib::ustring datadir = pathwraper + get_datadir_path() + pathwraper;
+ datadir += ":";
+ datadir += pathwraper + append_inkscape_datadir("inkscape") + pathwraper;
if (xgd) {
datadir += ":";
- datadir += xgd;
+ datadir += pathwraper + xgd + pathwraper;
}
g_setenv("XDG_DATA_DIRS", datadir.c_str(), TRUE);
// printf("XDG_DATA_DIRS = %s\n", g_getenv("XDG_DATA_DIRS"));
diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp
index 1fe56360b..520efa323 100644
--- a/src/ui/dialog/inkscape-preferences.cpp
+++ b/src/ui/dialog/inkscape-preferences.cpp
@@ -860,85 +860,12 @@ void InkscapePreferences::initPageUI()
std::sort(values.begin(), values.end());
labels.erase(unique(labels.begin(), labels.end()), labels.end());
values.erase(unique(values.begin(), values.end()), values.end());
+ labels.push_back(_("Use system icons"));
+ values.push_back(prefs->getString("/theme/defaultIconTheme"));
_icon_theme.init("/theme/iconTheme", labels, values, "hicolor");
_page_theme.add_line(false, _("Change icon theme:"), _icon_theme, "", "", false);
_icon_theme.signal_changed().connect(sigc::mem_fun(*this, &InkscapePreferences::symbolicThemeCheck));
}
-//TODO: this previous check only inkscape based folders dont check if icons are system wide
-//Commented one give full list but maybe is strange because some icons in the system dont have inkscape ones
-//static void _inkscape_fill_icons(const gchar *path, GHashTable *t)
-//{
-// const gchar *dir_entry;
-// GDir *dir;
-
-// dir = g_dir_open(path, 0, NULL);
-// if (!dir) {
-// return;
-// }
-// while ((dir_entry = g_dir_read_name(dir))) {
-// gchar *filename = g_build_filename(path, dir_entry, "index.theme", NULL);
-// gchar *scalable = g_build_filename(path, dir_entry, "scalable", NULL);
-// gchar *symbolic = g_build_filename(path, dir_entry, "symbolic", NULL);
-// if (g_file_test(filename, G_FILE_TEST_IS_REGULAR) &&
-// (g_file_test(scalable, G_FILE_TEST_IS_DIR) || g_file_test(symbolic, G_FILE_TEST_IS_DIR)) &&
-// g_strcmp0(dir_entry, "default") != 0 && !g_hash_table_contains(t, dir_entry)) {
-// g_hash_table_add(t, g_strdup(dir_entry));
-// }
-// g_free(filename);
-// g_free(scalable);
-// }
-// g_dir_close(dir);
-//}
-// {
-// GHashTable *t;
-// GHashTableIter iter;
-// gchar *icon_theme, *path;
-// gchar **builtin_icons;
-// GList *list, *l;
-// guint i;
-// const gchar *const *dirs;
-
-// t = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
-
-// path = g_build_filename(g_get_user_data_dir(), "icons", NULL);
-// _inkscape_fill_icons(path, t);
-// g_free(path);
-
-// path = g_build_filename(g_get_home_dir(), ".icons", NULL);
-// _inkscape_fill_icons(path, t);
-// g_free(path);
-
-// dirs = g_get_system_data_dirs();
-// for (i = 0; dirs[i]; i++) {
-// path = g_build_filename(dirs[i], "icons", NULL);
-// _inkscape_fill_icons(path, t);
-// g_free(path);
-// }
-
-// list = NULL;
-// g_hash_table_iter_init(&iter, t);
-
-// while (g_hash_table_iter_next(&iter, (gpointer *)&icon_theme, NULL)) {
-// list = g_list_insert_sorted(list, icon_theme, (GCompareFunc)strcmp);
-// }
-// std::vector<Glib::ustring> labels;
-// std::vector<Glib::ustring> values;
-// for (l = list; l; l = l->next) {
-// icon_theme = (gchar *)l->data;
-// labels.push_back(Glib::ustring(icon_theme));
-// values.push_back(Glib::ustring(icon_theme));
-// }
-// labels.erase(unique(labels.begin(), labels.end()), labels.end());
-// values.erase(unique(values.begin(), values.end()), values.end());
-
-// g_list_free(list);
-// g_hash_table_destroy(t);
-
-// _icon_theme.init("/theme/iconTheme", labels, values, "hicolor");
-// _page_theme.add_line(false, _("Change icon theme:"), _icon_theme, "", "", false);
-// _icon_theme.signal_changed().connect(sigc::mem_fun(*this, &InkscapePreferences::symbolicThemeCheck));
-// }
-
_symbolic_icons.init(_("Use symbolic icons"), "/theme/symbolicIcons", true);
_page_theme.add_line(true, "", _symbolic_icons, "", "", true),
_symbolic_color.init(_("Color for symbolic icons:"), "/theme/symbolicColor", 0x000000ff);
diff --git a/src/ui/interface.cpp b/src/ui/interface.cpp
index 11a609901..17501019b 100644
--- a/src/ui/interface.cpp
+++ b/src/ui/interface.cpp
@@ -274,10 +274,7 @@ void sp_ui_reload()
prefs_dialog->hide();
}
int window_geometry = prefs->getInt("/options/savewindowgeometry/value", PREFS_WINDOW_GEOMETRY_NONE);
- 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);
prefs->setInt("/options/savewindowgeometry/value", PREFS_WINDOW_GEOMETRY_LAST);
prefs->save();
std::list<SPDesktop *> desktops;