diff --git a/share/ui/inkscape-start.glade b/share/ui/inkscape-start.glade
index 7472ccd4fc4fdbd7f73cd98066daccc45415e34c..02eb8d9ef3c4f60f1ee0abe79cc6824848c36924 100644
--- a/share/ui/inkscape-start.glade
+++ b/share/ui/inkscape-start.glade
@@ -890,17 +890,28 @@ along with Inkscape Extensions Manager. If not, see
-
-
+
+ default
+ User Default
+
+
+ 0
+ 0
+ 0
+ 0
+ False
+ False
+ False
+
classic
Classic Adwaita
Adwaita
- hicolor
+ Adwaita
0
0
0
@@ -908,13 +919,12 @@ along with Inkscape Extensions Manager. If not, see False
False
False
- False
symbolic
Symbolic Adwaita
Adwaita
- hicolor
+ Adwaita
0
0
0
@@ -922,13 +932,12 @@ along with Inkscape Extensions Manager. If not, see False
True
False
- False
symbolic-dark
Symbolic Adwaita Dark
Adwaita
- hicolor
+ Adwaita
0
0
0
@@ -936,7 +945,6 @@ along with Inkscape Extensions Manager. If not, see True
True
False
- False
dark-color
@@ -950,7 +958,6 @@ along with Inkscape Extensions Manager. If not, see True
True
False
- False
light-color
@@ -964,7 +971,6 @@ along with Inkscape Extensions Manager. If not, see False
True
False
- False
dark-grey
@@ -978,21 +984,6 @@ along with Inkscape Extensions Manager. If not, see True
True
False
- False
-
-
- light-min
- Compacted (Small Screens)
- Minwaita
- multicolor
- #000000
- #00990a
- #ff1990
- #0099e6
- False
- True
- True
- False
@@ -1241,7 +1232,7 @@ along with Inkscape Extensions Manager. If not, see
- 11
+ 10
1
@@ -1271,19 +1262,119 @@ along with Inkscape Extensions Manager. If not, see
-
+
+
+ True
+ False
-
- True
- False
- center
-
-
- False
- True
- 2
-
-
-
-
- True
- False
- draw-rectangle
- 3
-
-
- False
- True
- 3
-
-
-
-
+
True
False
- draw-polygon-star
- 3
+ 8
+ Compact
False
True
- 4
+ 0
-
+
+ compactSwitch
True
- False
+ True
center
+ center
False
True
- 5
+ 1
-
+
True
False
- draw-path
- 3
+ 8
+ 8
+ Small icons
False
True
- 6
+ 2
-
+
+ smalliconsSwitch
True
- False
- draw-freehand
- 3
+ True
+ center
+ center
False
True
- 7
+ 3
diff --git a/src/inkscape.cpp b/src/inkscape.cpp
index bd2aa91202250b90c6cd8d64e40d4b42c5fc646e..dbeaff7a334092daa12291a58522ff3de4aafd13 100644
--- a/src/inkscape.cpp
+++ b/src/inkscape.cpp
@@ -315,6 +315,9 @@ Glib::ustring Application::get_symbolic_colors()
gchar colornamed_inverse[64];
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
Glib::ustring themeiconname = prefs->getString("/theme/iconTheme");
+ if (themeiconname == "") {
+ themeiconname = prefs->getString("/theme/defaultIconTheme");
+ }
guint32 colorsetbase = 0x2E3436ff;
guint32 colorsetbase_inverse = colorsetbase ^ 0xffffff00;
guint32 colorsetsuccess = 0x4AD589ff;
@@ -435,23 +438,27 @@ void Application::add_gtk_css(bool only_providers)
g_object_get(settings, "gtk-icon-theme-name", >kIconThemeName, NULL);
g_object_get(settings, "gtk-theme-name", >kThemeName, NULL);
g_object_get(settings, "gtk-application-prefer-dark-theme", >kApplicationPreferDarkTheme, NULL);
- g_object_set(settings, "gtk-application-prefer-dark-theme",
- prefs->getBool("/theme/preferDarkTheme", gtkApplicationPreferDarkTheme), NULL);
+ prefs->setBool("/theme/defaultPreferDarkTheme", gtkApplicationPreferDarkTheme);
prefs->setString("/theme/defaultTheme", Glib::ustring(gtkThemeName));
prefs->setString("/theme/defaultIconTheme", Glib::ustring(gtkIconThemeName));
Glib::ustring gtkthemename = prefs->getString("/theme/gtkTheme");
if (gtkthemename != "") {
g_object_set(settings, "gtk-theme-name", gtkthemename.c_str(), NULL);
} else {
- prefs->setString("/theme/gtkTheme", Glib::ustring(gtkThemeName));
+ Glib::RefPtr display = Gdk::Display::get_default();
+ Glib::RefPtr screen = display->get_default_screen();
+ Glib::RefPtr icon_theme = Gtk::IconTheme::get_for_screen(screen);
+ Gtk::IconInfo iconinfo = icon_theme->lookup_icon("tool-pointer", 22, Gtk::ICON_LOOKUP_FORCE_SIZE);
+ prefs->setBool("/theme/symbolicIcons", iconinfo.is_symbolic());
+ }
+ bool preferdarktheme = prefs->getBool("/theme/preferDarkTheme", false);
+ if (preferdarktheme) {
+ g_object_set(settings, "gtk-application-prefer-dark-theme", true, NULL);
}
themeiconname = prefs->getString("/theme/iconTheme");
if (themeiconname != "") {
g_object_set(settings, "gtk-icon-theme-name", themeiconname.c_str(), NULL);
- } else {
- prefs->setString("/theme/iconTheme", Glib::ustring(gtkIconThemeName));
}
-
}
g_free(gtkThemeName);
@@ -474,8 +481,12 @@ void Application::add_gtk_css(bool only_providers)
contrast *= 2.5;
shade = 1 + contrast;
}
+ Glib::ustring current_theme = prefs->getString("/theme/gtkTheme");
+ if (current_theme == "") {
+ current_theme = prefs->getString("/theme/defaultTheme");
+ }
GtkCssProvider *currentthemeprovider =
- gtk_css_provider_get_named(prefs->getString("/theme/gtkTheme").c_str(), variant);
+ gtk_css_provider_get_named(current_theme.c_str(), variant);
std::string cssstring = gtk_css_provider_to_string(currentthemeprovider);
std::string appenddefined = "";
if (contrast) {
@@ -512,6 +523,9 @@ void Application::add_gtk_css(bool only_providers)
}
Glib::ustring gtkthemename = prefs->getString("/theme/gtkTheme");
+ if (gtkthemename == "") {
+ gtkthemename = prefs->getString("/theme/defaultTheme");
+ }
gtkthemename += ".css";
style = get_filename(UIS, gtkthemename.c_str(), false, true);
if (!style.empty()) {
diff --git a/src/ui/cursor-utils.cpp b/src/ui/cursor-utils.cpp
index bafce3bbe1f83ecd6bc8b43d238839558acae9d3..10a58d4ce4e687c6c94160ace3aaade5bc12c1ad 100644
--- a/src/ui/cursor-utils.cpp
+++ b/src/ui/cursor-utils.cpp
@@ -60,6 +60,9 @@ load_svg_cursor(Glib::RefPtr display,
// Set in preferences
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
Glib::ustring theme_name = prefs->getString("/theme/iconTheme");
+ if (theme_name == "") {
+ theme_name = prefs->getString("/theme/defaultIconTheme");
+ }
if (!theme_name.empty()) {
theme_names.push_back(theme_name);
}
diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp
index 78149f8781321e3e6672721ec8e3428ac767a225..e9786e35892699557e47261af266c7c247194c27 100644
--- a/src/ui/dialog/inkscape-preferences.cpp
+++ b/src/ui/dialog/inkscape-preferences.cpp
@@ -1048,8 +1048,8 @@ void InkscapePreferences::get_highlight_colors(guint32 &colorsetbase, guint32 &c
using namespace Inkscape::IO::Resource;
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
Glib::ustring themeiconname = prefs->getString("/theme/iconTheme");
- if (themeiconname == prefs->getString("/theme/defaultIconTheme")) {
- themeiconname = "hicolor";
+ if (themeiconname == "") {
+ themeiconname = prefs->getString("/theme/defaultIconTheme");
}
Glib::ustring prefix = "";
if (prefs->getBool("/theme/darkTheme", false)) {
@@ -1118,6 +1118,9 @@ void InkscapePreferences::resetIconsColors(bool themechange)
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
Glib::ustring themeiconname = prefs->getString("/theme/iconTheme");
+ if (themeiconname == "") {
+ themeiconname = prefs->getString("/theme/defaultIconTheme");
+ }
if (!prefs->getBool("/theme/symbolicIcons", false)) {
_symbolic_base_colors.set_sensitive(false);
_symbolic_highlight_colors.set_sensitive(false);
@@ -1195,6 +1198,9 @@ void InkscapePreferences::changeIconsColors()
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
Glib::ustring themeiconname = prefs->getString("/theme/iconTheme");
+ if (themeiconname == "") {
+ themeiconname = prefs->getString("/theme/defaultIconTheme");
+ }
guint32 colorsetbase = prefs->getUInt("/theme/" + themeiconname + "/symbolicBaseColor", 0x2E3436ff);
guint32 colorsetsuccess = prefs->getUInt("/theme/" + themeiconname + "/symbolicSuccessColor", 0x4AD589ff);
guint32 colorsetwarning = prefs->getUInt("/theme/" + themeiconname + "/symbolicWarningColor", 0xF57900ff);
@@ -1233,8 +1239,10 @@ void InkscapePreferences::toggleSymbolic()
_symbolic_base_colors.set_sensitive(true);
_symbolic_highlight_colors.set_sensitive(true);
Glib::ustring themeiconname = prefs->getString("/theme/iconTheme");
- if (prefs->getBool("/theme/symbolicDefaultHighColors", true) ||
- prefs->getBool("/theme/symbolicDefaultBaseColors", true) ||
+ if (themeiconname == "") {
+ themeiconname = prefs->getString("/theme/defaultIconTheme");
+ }
+ if (prefs->getBool("/theme/symbolicDefaultColors", true) ||
!prefs->getEntry("/theme/" + themeiconname + "/symbolicBaseColor").isValid()) {
resetIconsColors();
} else {
@@ -1275,6 +1283,9 @@ void InkscapePreferences::themeChange()
}
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
Glib::ustring current_theme = prefs->getString("/theme/gtkTheme");
+ if (current_theme == "") {
+ current_theme = prefs->getString("/theme/defaultTheme");
+ }
auto settings = Gtk::Settings::get_default();
_dark_theme.get_parent()->set_no_show_all(false);
if (dark_themes[current_theme]) {
@@ -1316,6 +1327,9 @@ void InkscapePreferences::preferDarkThemeChange()
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
bool dark_theme = prefs->getBool("/theme/preferDarkTheme", false);
Glib::ustring current_theme = prefs->getString("/theme/gtkTheme");
+ if (current_theme == "") {
+ current_theme = prefs->getString("/theme/defaultTheme");
+ }
auto settings = Gtk::Settings::get_default();
settings->property_gtk_application_prefer_dark_theme() = dark_theme;
bool dark = current_theme.find(":dark") != std::string::npos;
@@ -1348,6 +1362,9 @@ void InkscapePreferences::symbolicThemeCheck()
using namespace Inkscape::IO::Resource;
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
Glib::ustring themeiconname = prefs->getString("/theme/iconTheme");
+ if (themeiconname == "") {
+ themeiconname = prefs->getString("/theme/defaultIconTheme");
+ }
bool symbolic = false;
auto settings = Gtk::Settings::get_default();
if (settings) {
@@ -1355,7 +1372,8 @@ void InkscapePreferences::symbolicThemeCheck()
settings->property_gtk_icon_theme_name() = themeiconname;
}
}
- if (prefs->getString("/theme/defaultIconTheme") != prefs->getString("/theme/iconTheme")) {
+ if (themeiconname != "Adwaita") {
+
auto folders = get_foldernames(ICONS, { "application" });
for (auto &folder : folders) {
auto path = folder;
@@ -1363,7 +1381,7 @@ void InkscapePreferences::symbolicThemeCheck()
if (std::string::npos != last_slash_idx) {
folder.erase(0, last_slash_idx + 1);
}
- if (folder == prefs->getString("/theme/iconTheme")) {
+ if (folder == themeiconname) {
#ifdef _WIN32
path += g_win32_locale_filename_from_utf8("/symbolic/actions");
#else
@@ -1616,6 +1634,9 @@ void InkscapePreferences::initPageUI()
_dark_theme.init(_("Use dark theme"), "/theme/preferDarkTheme", false);
Glib::ustring current_theme = prefs->getString("/theme/gtkTheme");
Glib::ustring default_theme = prefs->getString("/theme/defaultTheme");
+ if (current_theme == "") {
+ current_theme = default_theme;
+ }
Glib::ustring theme = "";
{
dark_themes = get_available_themes();
@@ -1635,8 +1656,8 @@ void InkscapePreferences::initPageUI()
Glib::ustring default_theme_label = _("Use system theme");
default_theme_label += " (" + default_theme + ")";
labels.emplace_back(default_theme_label);
- values.push_back(default_theme);
- _gtk_theme.init("/theme/gtkTheme", labels, values, "Adwaita");
+ values.emplace_back("");
+ _gtk_theme.init("/theme/gtkTheme", labels, values, "");
_page_theme.add_line(false, _("Change GTK theme:"), _gtk_theme, "", "", false);
_gtk_theme.signal_changed().connect(sigc::mem_fun(*this, &InkscapePreferences::themeChange));
}
@@ -1675,25 +1696,24 @@ void InkscapePreferences::initPageUI()
if (std::string::npos != last_slash_idx) {
folder.erase(0, last_slash_idx + 1);
}
- if (folder == default_icon_theme || (default_icon_theme == "Adwaita" && folder == "hicolor")) {
- continue;
+ if (folder == "hicolor") {
+ labels.emplace_back("Adwaita");
+ values.emplace_back("Adwaita");
+ } else {
+ labels.push_back(folder);
+ values.push_back(folder);
}
- labels.push_back(folder);
- values.push_back(folder);
}
std::sort(labels.begin(), labels.end());
std::sort(values.begin(), values.end());
labels.erase(unique(labels.begin(), labels.end()), labels.end());
values.erase(unique(values.begin(), values.end()), values.end());
- values.push_back(default_icon_theme);
- if (default_icon_theme == "Adwaita") {
- default_icon_theme = "hicolor";
- }
+ values.emplace_back("");
Glib::ustring default_icon_label = _("Use system icons");
default_icon_label += " (" + default_icon_theme + ")";
labels.emplace_back(default_icon_label);
- _icon_theme.init("/theme/iconTheme", labels, values, "Adwaita");
+ _icon_theme.init("/theme/iconTheme", labels, values, "");
_page_theme.add_line(false, _("Change icon theme:"), _icon_theme, "", "", false);
_icon_theme.signal_changed().connect(sigc::mem_fun(*this, &InkscapePreferences::symbolicThemeCheck));
_sys_user_icons_dir_copy.init((char const *)IO::Resource::get_path(IO::Resource::USER, IO::Resource::ICONS, ""),
@@ -1701,6 +1721,9 @@ void InkscapePreferences::initPageUI()
_page_theme.add_line(true, _("User icons: "), _sys_user_icons_dir_copy, "", _("Location of the user’s icons"), true, Gtk::manage(new Gtk::Box()));
}
Glib::ustring themeiconname = prefs->getString("/theme/iconTheme");
+ if (themeiconname == "") {
+ themeiconname = prefs->getString("/theme/defaultIconTheme");
+ }
_symbolic_icons.init(_("Use symbolic icons"), "/theme/symbolicIcons", false);
_symbolic_icons.signal_clicked().connect(sigc::mem_fun(*this, &InkscapePreferences::toggleSymbolic));
_page_theme.add_line(true, "", _symbolic_icons, "", "", true);
diff --git a/src/ui/dialog/startup.cpp b/src/ui/dialog/startup.cpp
index 7c109d249f923b6a0631cdc79c5498e26336f102..116684697f848a4d9efd405602be3f31319dab63 100644
--- a/src/ui/dialog/startup.cpp
+++ b/src/ui/dialog/startup.cpp
@@ -100,7 +100,6 @@ class ThemeCols: public Gtk::TreeModel::ColumnRecord {
this->add(this->error);
this->add(this->dark);
this->add(this->symbolic);
- this->add(this->smallicons);
this->add(this->enabled);
}
Gtk::TreeModelColumn id;
@@ -113,7 +112,6 @@ class ThemeCols: public Gtk::TreeModel::ColumnRecord {
Gtk::TreeModelColumn error;
Gtk::TreeModelColumn dark;
Gtk::TreeModelColumn symbolic;
- Gtk::TreeModelColumn smallicons;
Gtk::TreeModelColumn enabled;
};
@@ -175,7 +173,10 @@ StartScreen::StartScreen()
builder->get_widget("thanks", thanks);
builder->get_widget("show_toggle", show_toggle);
builder->get_widget("load", load);
-
+ builder->get_widget("compact", compact);
+ builder->get_widget("smallicons", smallicons);
+ builder->get_widget("iconrowsmall", iconrowsmall);
+ builder->get_widget("iconrow", iconrow);
// Unparent to move to our dialog window.
auto parent = banners->get_parent();
parent->remove(*banners);
@@ -190,6 +191,21 @@ StartScreen::StartScreen()
enlist_recent_files();
enlist_keys();
filter_themes();
+ if (prefs->getString("/options/boot/theme") == "") {
+ compact->set_sensitive(false);
+ }
+ Glib::ustring gtkthemename = prefs->getString("/theme/gtkTheme");
+ if (gtkthemename == "Minwaita") {
+ compact->set_active(true);
+ }
+ if (prefs->getBool("/toolbox/tools/small",false)) {
+ smallicons->set_active(true);
+ iconrowsmall->show();
+ iconrow->hide();
+ } else {
+ iconrow->show();
+ iconrowsmall->hide();
+ }
set_active_combo("themes", prefs->getString("/options/boot/theme"));
set_active_combo("canvas", prefs->getString("/options/boot/canvas"));
@@ -197,6 +213,8 @@ StartScreen::StartScreen()
canvas->signal_changed().connect(sigc::mem_fun(*this, &StartScreen::canvas_changed));
keys->signal_changed().connect(sigc::mem_fun(*this, &StartScreen::keyboard_changed));
themes->signal_changed().connect(sigc::mem_fun(*this, &StartScreen::theme_changed));
+ compact->property_active().signal_changed().connect(sigc::mem_fun(*this, &StartScreen::theme_changed));
+ smallicons->property_active().signal_changed().connect(sigc::mem_fun(*this, &StartScreen::theme_changed));
save->signal_clicked().connect(sigc::bind(sigc::mem_fun(*this, &StartScreen::notebook_next), save));
// "Supported by You" tab
@@ -490,10 +508,36 @@ StartScreen::refresh_theme(Glib::ustring theme_name)
auto settings = Gtk::Settings::get_default();
auto prefs = Inkscape::Preferences::get();
-
- settings->property_gtk_theme_name() = theme_name;
- settings->property_gtk_application_prefer_dark_theme() = prefs->getBool("/theme/darkTheme", true);
- settings->property_gtk_icon_theme_name() = prefs->getString("/theme/iconTheme");
+ if (theme_name == "") {
+ theme_name = prefs->getString("/theme/defaultTheme");
+ bool preferDarkTheme = prefs->getBool("/theme/defaultPreferDarkTheme", false);
+ prefs->setBool("/theme/preferDarkTheme", preferDarkTheme);
+ settings->property_gtk_application_prefer_dark_theme() = preferDarkTheme;
+ settings->property_gtk_theme_name() = theme_name;
+ bool dark = Glib::ustring(theme_name).find(":dark") != std::string::npos;
+ if (!dark) {
+ Glib::RefPtr stylecontext = get_style_context();
+ Gdk::RGBA rgba;
+ bool background_set = stylecontext->lookup_color("theme_bg_color", rgba);
+ if (background_set && (0.299 * rgba.get_red() + 0.587 * rgba.get_green() + 0.114 * rgba.get_blue()) < 0.5) {
+ dark = true;
+ }
+ }
+ prefs->setBool("/theme/darkTheme", dark);
+ Glib::RefPtr display = Gdk::Display::get_default();
+ Glib::RefPtr screen = display->get_default_screen();
+ Glib::RefPtr icon_theme = Gtk::IconTheme::get_for_screen(screen);
+ Gtk::IconInfo iconinfo = icon_theme->lookup_icon("tool-pointer", 22, Gtk::ICON_LOOKUP_FORCE_SIZE);
+ prefs->setBool("/theme/symbolicIcons", iconinfo.is_symbolic());
+ } else {
+ settings->property_gtk_theme_name() = theme_name;
+ settings->property_gtk_application_prefer_dark_theme() = prefs->getBool("/theme/preferDarkTheme", false);
+ }
+ Glib::ustring themeiconname = prefs->getString("/theme/iconTheme");
+ if (themeiconname == "") {
+ themeiconname = prefs->getString("/theme/defaultIconTheme");
+ }
+ settings->property_gtk_icon_theme_name() = themeiconname;
if (prefs->getBool("/theme/symbolicIcons", false)) {
get_style_context()->add_class("symbolic");
@@ -537,8 +581,25 @@ StartScreen::theme_changed()
// Update theme from combo.
Glib::ustring icons = row[cols.icons];
- prefs->setBool("/toolbox/tools/small", row[cols.smallicons]);
- prefs->setString("/theme/gtkTheme", row[cols.theme]);
+ if (smallicons->get_active()) {
+ smallicons->set_active(true);
+ iconrowsmall->show();
+ iconrow->hide();
+ } else {
+ iconrow->show();
+ iconrowsmall->hide();
+ }
+ prefs->setBool("/toolbox/tools/small", smallicons->get_active());
+ if (row[cols.theme] == "") {
+ compact->set_sensitive(false);
+ } else {
+ compact->set_sensitive(has_minwaita);
+ }
+ if (compact->get_active()) {
+ prefs->setString("/theme/gtkTheme", "Minwaita");
+ } else {
+ prefs->setString("/theme/gtkTheme", row[cols.theme]);
+ }
prefs->setString("/theme/iconTheme", icons);
prefs->setBool("/theme/preferDarkTheme", row[cols.dark]);
prefs->setBool("/theme/darkTheme", row[cols.dark]);
@@ -557,8 +618,7 @@ StartScreen::theme_changed()
prefs->setUInt(prefix + "/symbolicWarningColor", get_color_value(row[cols.warn]));
prefs->setUInt(prefix + "/symbolicErrorColor", get_color_value(row[cols.error]));
}
-
- refresh_theme(row[cols.theme]);
+ refresh_theme(prefs->getString("/theme/gtkTheme"));
} catch(int e) {
g_warning("Couldn't find theme value.");
}
@@ -602,11 +662,17 @@ StartScreen::filter_themes()
// We need to disable themes which aren't available.
auto store = Glib::wrap(GTK_LIST_STORE(gtk_combo_box_get_model(themes->gobj())));
auto available = get_available_themes();
-
for(auto row : store->children()) {
Glib::ustring theme = row[cols.theme];
- row[cols.enabled] = available.find(theme) != available.end();
+
+ if (theme == "") {
+ row[cols.enabled] = true;
+ } else {
+ row[cols.enabled] = available.find(theme) != available.end();
+ }
}
+ has_minwaita = available.find("Minwaita") != available.end();
+ compact->set_sensitive(has_minwaita);
}
void
diff --git a/src/ui/dialog/startup.h b/src/ui/dialog/startup.h
index 302783e3937b0b1d42d7b321e546d26e9f93866f..8b78efe89f734ac6626318670e3c2c94c965cbc3 100644
--- a/src/ui/dialog/startup.h
+++ b/src/ui/dialog/startup.h
@@ -39,7 +39,6 @@ private:
void filter_themes();
void keyboard_changed();
void notebook_switch(Gtk::Widget *tab, guint page_num);
-
void theme_changed();
void canvas_changed();
void refresh_theme(Glib::ustring theme_name);
@@ -55,7 +54,11 @@ private:
Gtk::Fixed *banners = nullptr;
Gtk::ComboBox *themes = nullptr;
Gtk::TreeView *recent_treeview = nullptr;
-
+ Gtk::Switch *smallicons = nullptr;
+ Gtk::Switch *compact = nullptr;
+ Gtk::Box *iconrowsmall = nullptr;
+ Gtk::Box *iconrow = nullptr;
+ bool has_minwaita = false;
SPDocument* _document = nullptr;
};