From de71e1d6d9214db9ad772ac5068c09f41e9bcac1 Mon Sep 17 00:00:00 2001 From: Simon Quigley Date: Sun, 30 Dec 2018 17:06:40 -0600 Subject: [PATCH] Remove reverse-applicable patches. --- debian/changelog | 1 + debian/patches/gtk-appearance-settings.patch | 853 ------------------ .../mkpath-for-null-gtk-settings.patch | 18 - debian/patches/series | 3 - debian/patches/set-default-gtk-theme.patch | 72 -- 5 files changed, 1 insertion(+), 946 deletions(-) delete mode 100644 debian/patches/gtk-appearance-settings.patch delete mode 100644 debian/patches/mkpath-for-null-gtk-settings.patch delete mode 100644 debian/patches/series delete mode 100644 debian/patches/set-default-gtk-theme.patch diff --git a/debian/changelog b/debian/changelog index 0ff48e9..61f11b1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ lxqt-config (0.13.0+git20181226-0ubuntu1) UNRELEASED; urgency=medium * New upstream Git snapshot. + - Remove reverse-applicable patches. -- Simon Quigley Sun, 30 Dec 2018 16:39:06 -0600 diff --git a/debian/patches/gtk-appearance-settings.patch b/debian/patches/gtk-appearance-settings.patch deleted file mode 100644 index f75324c..0000000 --- a/debian/patches/gtk-appearance-settings.patch +++ /dev/null @@ -1,853 +0,0 @@ -Description: Add the ability to set GTK themes -Author: P.L. Lucas -Origin: upstream -Applied-Upstream: https://github.com/lxqt/lxqt-config/pull/244 -Last-Update: 2018-07-30 ---- a/lxqt-config-appearance/CMakeLists.txt -+++ b/lxqt-config-appearance/CMakeLists.txt -@@ -15,6 +15,7 @@ set(MOC_FILES - fontsconfig.h - styleconfig.h - fontconfigfile.h -+ configothertoolkits.h - ) - - set(CPP_FILES -@@ -25,6 +26,7 @@ set(CPP_FILES - fontsconfig.cpp - styleconfig.cpp - fontconfigfile.cpp -+ configothertoolkits.cpp - ) - - set(UI_FILES ---- /dev/null -+++ b/lxqt-config-appearance/configothertoolkits.cpp -@@ -0,0 +1,329 @@ -+/* BEGIN_COMMON_COPYRIGHT_HEADER -+ * (c)LGPL2+ -+ * -+ * LXQt - a lightweight, Qt based, desktop toolset -+ * https://lxqt.org/ -+ * -+ * Copyright: 2018 LXQt team -+ * -+ * This program or library is free software; you can redistribute it -+ * and/or modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ -+ * You should have received a copy of the GNU Lesser General -+ * Public License along with this library; if not, write to the -+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -+ * Boston, MA 02110-1301 USA -+ * -+ * END_COMMON_COPYRIGHT_HEADER */ -+ -+#include "configothertoolkits.h" -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+ -+static const char *GTK2_CONFIG = R"GTK2_CONFIG( -+# Created by lxqt-config-appearance (DO NOT EDIT!) -+gtk-theme-name = "%1" -+gtk-icon-theme-name = "%2" -+gtk-font-name = "%3" -+gtk-button-images = %4 -+gtk-menu-images = %4 -+gtk-toolbar-style = %5 -+)GTK2_CONFIG"; -+ -+static const char *GTK3_CONFIG = R"GTK3_CONFIG( -+# Created by lxqt-config-appearance (DO NOT EDIT!) -+[Settings] -+gtk-theme-name = %1 -+gtk-icon-theme-name = %2 -+# GTK3 ignores bold or italic attributes. -+gtk-font-name = %3 -+gtk-menu-images = %4 -+gtk-button-images = %4 -+gtk-toolbar-style = %5 -+)GTK3_CONFIG"; -+ -+static const char *XSETTINGS_CONFIG = R"XSETTINGS_CONFIG( -+# Created by lxqt-config-appearance (DO NOT EDIT!) -+Net/IconThemeName "%2" -+Net/ThemeName "%1" -+Gtk/FontName "%3" -+Gtk/MenuImages %4 -+Gtk/ButtonImages %4 -+Gtk/ToolbarStyle "%5" -+)XSETTINGS_CONFIG"; -+ -+ConfigOtherToolKits::ConfigOtherToolKits(LXQt::Settings *settings, LXQt::Settings *configAppearanceSettings, QObject *parent) : QObject(parent) -+{ -+ mSettings = settings; -+ mConfigAppearanceSettings = configAppearanceSettings; -+ if(tempFile.open()) { -+ mXsettingsdProc.setProcessChannelMode(QProcess::ForwardedChannels); -+ mXsettingsdProc.start("xsettingsd", QStringList() << "-c" << tempFile.fileName()); -+ if(!mXsettingsdProc.waitForStarted()) -+ return; -+ tempFile.close(); -+ } -+} -+ -+ConfigOtherToolKits::~ConfigOtherToolKits() -+{ -+ mXsettingsdProc.close(); -+} -+ -+static QString get_environment_var(const char *envvar, const char *defaultValue) -+{ -+ QString homeDir = QStandardPaths::writableLocation(QStandardPaths::HomeLocation); -+ QString mDirPath = QString::fromLocal8Bit(qgetenv(envvar)); -+ if(mDirPath.isEmpty()) -+ mDirPath = homeDir + defaultValue; -+ else { -+ for(QString path : mDirPath.split(":") ) { -+ mDirPath = path; -+ break; -+ } -+ } -+ return mDirPath; -+} -+ -+static QString _get_config_path(QString path) -+{ -+ QString homeDir = QStandardPaths::writableLocation(QStandardPaths::HomeLocation); -+ path.replace("$XDG_CONFIG_HOME", get_environment_var("XDG_CONFIG_HOME", "/.config")); -+ path.replace("$GTK2_RC_FILES", get_environment_var("GTK2_RC_FILES", "/.gtkrc-2.0")); // If $GTK2_RC_FILES is undefined, "~/.gtkrc-2.0" will be used. -+ path.replace("~", homeDir); -+ return path; -+} -+ -+QString ConfigOtherToolKits::getGTKConfigPath(QString version) -+{ -+ if(version == "2.0") -+ return _get_config_path("$GTK2_RC_FILES"); -+ return _get_config_path(QString("$XDG_CONFIG_HOME/gtk-%1/settings.ini").arg(version)); -+} -+ -+static bool grep(QFile &file, QByteArray text) -+{ -+ if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) -+ return false; -+ while (!file.atEnd()) { -+ QByteArray line = file.readLine().trimmed(); -+ if(line.startsWith(text)) { -+ return true; -+ } -+ } -+ file.close(); -+ return false; -+} -+ -+bool ConfigOtherToolKits::backupGTKSettings(QString version) -+{ -+ QString gtkrcPath = getGTKConfigPath(version); -+ QFile file(gtkrcPath); -+ if(file.exists() && !grep(file, "# Created by lxqt-config-appearance (DO NOT EDIT!)")) { -+ QString backupPath = gtkrcPath + "-" + QString::number(QDateTime::currentSecsSinceEpoch()) + "~"; -+ file.copy(backupPath); -+ QMessageBox::warning(nullptr, tr("GTK themes"), -+ tr("

'%1' has been overwritten.

You can find a copy of your old settings in '%2'

") -+ .arg(getGTKConfigPath(version)) -+ .arg(backupPath) -+ , QMessageBox::Ok); -+ return true; -+ } -+ return false; -+} -+ -+void ConfigOtherToolKits::setConfig() -+{ -+ if(!mConfigAppearanceSettings->contains("ControlGTKThemeEnabled")) -+ mConfigAppearanceSettings->setValue("ControlGTKThemeEnabled", false); -+ bool controlGTKThemeEnabled = mConfigAppearanceSettings->value("ControlGTKThemeEnabled").toBool(); -+ if(! controlGTKThemeEnabled) -+ return; -+ updateConfigFromSettings(); -+ mConfig.styleTheme = getGTKThemeFromRCFile("3.0"); -+ setGTKConfig("3.0"); -+ mConfig.styleTheme = getGTKThemeFromRCFile("2.0"); -+ setGTKConfig("2.0"); -+ setXSettingsConfig(); -+} -+ -+void ConfigOtherToolKits::setXSettingsConfig() -+{ -+ // setGTKConfig is called before calling setXSettingsConfig, -+ // then updateConfigFromSettings is not required. -+ //updateConfigFromSettings(); -+ //mConfig.styleTheme = getGTKThemeFromRCFile(version); -+ -+ // Reload settings. xsettingsd must be installed. -+ // xsettingsd settings are written to stdin. -+ if(QProcess::Running == mXsettingsdProc.state()) { -+ QFile file(tempFile.fileName()); -+ if(file.open(QIODevice::WriteOnly)) { -+ file.write( getConfig(XSETTINGS_CONFIG).toLocal8Bit() ); -+ file.flush(); -+ file.close(); -+ } -+ int pid = mXsettingsdProc.processId(); -+ kill(pid, SIGHUP); -+ } -+} -+ -+void ConfigOtherToolKits::setGTKConfig(QString version, QString theme) -+{ -+ updateConfigFromSettings(); -+ if(!theme.isEmpty()) -+ mConfig.styleTheme = theme; -+ backupGTKSettings(version); -+ QString gtkrcPath = getGTKConfigPath(version); -+ if(version == "2.0") -+ writeConfig(gtkrcPath, GTK2_CONFIG); -+ else -+ writeConfig(gtkrcPath, GTK3_CONFIG); -+} -+ -+QString ConfigOtherToolKits::getConfig(const char *configString) -+{ -+ return QString(configString).arg(mConfig.styleTheme, mConfig.iconTheme, -+ mConfig.fontName, mConfig.buttonStyle==0 ? "0":"1", -+ mConfig.toolButtonStyle -+ ); -+} -+ -+void ConfigOtherToolKits::writeConfig(QString path, const char *configString) -+{ -+ path = _get_config_path(path); -+ -+ QFile file(path); -+ if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { -+ return; -+ } -+ QTextStream out(&file); -+ out << getConfig(configString); -+ out.flush(); -+ file.close(); -+} -+ -+QStringList ConfigOtherToolKits::getGTKThemes(QString version) -+{ -+ QStringList themeList; -+ QString configFile = version=="2.0" ? "gtk-2.0/gtkrc" : QString("gtk-%1/gtk.css").arg(version); -+ -+ QStringList dataPaths = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation); -+ for(QString dataPath : dataPaths) { -+ QDir themesPath(dataPath + "/themes"); -+ QStringList themes = themesPath.entryList(QDir::Dirs); -+ for(QString theme : themes) { -+ QFileInfo themePath(QString("%1/themes/%2/%3").arg(dataPath, theme, configFile)); -+ if(themePath.exists()) -+ themeList.append(theme); -+ } -+ } -+ return themeList; -+} -+ -+QString ConfigOtherToolKits::getGTKThemeFromRCFile(QString version) -+{ -+ if(version == "2.0") { -+ QString gtkrcPath = _get_config_path("$GTK2_RC_FILES"); -+ QFile file(gtkrcPath); -+ if(file.exists()) { -+ if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) -+ return QString(); -+ while (!file.atEnd()) { -+ QByteArray line = file.readLine().trimmed(); -+ if(line.startsWith("gtk-theme-name")) { -+ QList parts = line.split('='); -+ if(parts.size()>=2) { -+ file.close(); -+ return parts[1].replace('"', "").trimmed(); -+ } -+ } -+ } -+ file.close(); -+ } -+ } else { -+ QString gtkrcPath = _get_config_path(QString("$XDG_CONFIG_HOME/gtk-%1/settings.ini").arg(version)); -+ QFile file(gtkrcPath); -+ if(file.exists()) { -+ if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) -+ return QString(); -+ bool settingsFound = false; -+ while (!file.atEnd()) { -+ QByteArray line = file.readLine().trimmed(); -+ if(line.startsWith("[Settings]")) -+ settingsFound = true; -+ else if(line.startsWith("[") && line.endsWith("]")) -+ settingsFound = false; -+ else if(settingsFound && line.startsWith("gtk-theme-name")) { -+ QList parts = line.split('='); -+ if(parts.size()>=2) { -+ file.close(); -+ return parts[1].trimmed(); -+ } -+ } -+ } -+ file.close(); -+ } -+ } -+ return QString(); -+} -+ -+void ConfigOtherToolKits::updateConfigFromSettings() -+{ -+ mSettings->beginGroup(QLatin1String("Qt")); -+ QFont font; -+ font.fromString(mSettings->value("font").toString()); -+ // Font name from: https://developer.gnome.org/pango/stable/pango-Fonts.html#pango-font-description-from-string -+ // FAMILY-LIST [SIZE]", where FAMILY-LIST is a comma separated list of families optionally terminated by a comma, -+ // STYLE_OPTIONS is a whitespace separated list of words where each word describes one of style, variant, weight, stretch, or gravity, and -+ // SIZE is a decimal number (size in points) or optionally followed by the unit modifier "px" for absolute size. -+ mConfig.fontName = QString("%1%2%3 %4") -+ .arg(font.family()) //%1 -+ .arg(font.style()==QFont::StyleNormal?"":" Italic") //%2 -+ .arg(font.weight()==QFont::Normal?"":" Bold") //%3 -+ .arg(font.pointSize()); //%4 -+ mSettings->endGroup(); -+ -+ mConfig.iconTheme = mSettings->value("icon_theme").toString(); -+ { -+ // Tool button style -+ QByteArray tb_style = mSettings->value("tool_button_style").toByteArray(); -+ // convert toolbar style name to value -+ QMetaEnum me = QToolBar::staticMetaObject.property(QToolBar::staticMetaObject.indexOfProperty("toolButtonStyle")).enumerator(); -+ int val = me.keyToValue(tb_style.constData()); -+ mConfig.buttonStyle = 1; -+ switch(val) { -+ case Qt::ToolButtonIconOnly: -+ mConfig.toolButtonStyle = "GTK_TOOLBAR_ICONS"; -+ break; -+ case Qt::ToolButtonTextOnly: -+ mConfig.toolButtonStyle = "GTK_TOOLBAR_TEXT"; -+ mConfig.buttonStyle = 0; -+ break; -+ case Qt::ToolButtonTextUnderIcon: -+ mConfig.toolButtonStyle = "GTK_TOOLBAR_BOTH"; -+ break; -+ default: -+ mConfig.toolButtonStyle = "GTK_TOOLBAR_BOTH_HORIZ"; -+ } -+ } -+} -+ ---- /dev/null -+++ b/lxqt-config-appearance/configothertoolkits.h -@@ -0,0 +1,70 @@ -+/* BEGIN_COMMON_COPYRIGHT_HEADER -+ * (c)LGPL2+ -+ * -+ * LXQt - a lightweight, Qt based, desktop toolset -+ * https://lxqt.org -+ * -+ * Copyright: 2018 LXQt team -+ * -+ * This program or library is free software; you can redistribute it -+ * and/or modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ -+ * You should have received a copy of the GNU Lesser General -+ * Public License along with this library; if not, write to the -+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -+ * Boston, MA 02110-1301 USA -+ * -+ * END_COMMON_COPYRIGHT_HEADER */ -+ -+#ifndef CONFIGOTHERTOOLKITS_H -+#define CONFIGOTHERTOOLKITS_H -+ -+#include -+#include -+#include -+#include -+ -+class ConfigOtherToolKits : public QObject -+{ -+ Q_OBJECT -+ -+public: -+ ConfigOtherToolKits(LXQt::Settings *settings, LXQt::Settings *configAppearanceSettings, QObject *parent = 0); -+ ~ConfigOtherToolKits(); -+ QStringList getGTKThemes(QString version); -+ QString getGTKThemeFromRCFile(QString version); -+ QString getGTKConfigPath(QString version); -+ bool backupGTKSettings(QString version); -+ -+public slots: -+ void setConfig(); -+ void setXSettingsConfig(); -+ void setGTKConfig(QString version, QString theme = QString()); -+ -+private: -+ struct Config { -+ QString iconTheme; -+ QString styleTheme; -+ QString fontName; -+ QString toolButtonStyle; -+ int buttonStyle; -+ } mConfig; -+ void writeConfig(QString path, const char *configString); -+ QString getConfig(const char *configString); -+ void updateConfigFromSettings(); -+ -+ LXQt::Settings *mSettings; -+ LXQt::Settings *mConfigAppearanceSettings; -+ -+ QProcess mXsettingsdProc; -+ QTemporaryFile tempFile; -+}; -+ -+#endif // CONFIGOTHERTOOLKITS_H ---- a/lxqt-config-appearance/fontconfigfile.h -+++ b/lxqt-config-appearance/fontconfigfile.h -@@ -64,6 +64,7 @@ public: - } - void setAutohint(bool value); - -+ - private Q_SLOTS: - void save(); - ---- a/lxqt-config-appearance/fontsconfig.cpp -+++ b/lxqt-config-appearance/fontsconfig.cpp -@@ -188,6 +188,8 @@ void FontsConfig::updateQtFont() - mQtSettings->endGroup(); - mQtSettings->sync(); - -+ emit updateSettings(); -+ - #ifdef Q_WS_X11 - qt_x11_apply_settings_in_all_apps(); - #endif ---- a/lxqt-config-appearance/fontsconfig.h -+++ b/lxqt-config-appearance/fontsconfig.h -@@ -51,6 +51,9 @@ public: - public Q_SLOTS: - void initControls(); - -+signals: -+ void updateSettings(); -+ - private Q_SLOTS: - void updateQtFont(); - void antialiasToggled(bool toggled); ---- a/lxqt-config-appearance/iconthemeconfig.cpp -+++ b/lxqt-config-appearance/iconthemeconfig.cpp -@@ -151,5 +151,7 @@ void IconThemeConfig::iconThemeSelected( - - m_settings->setValue("icon_theme", theme); - m_settings->sync(); -+ -+ emit updateSettings(); - } - } ---- a/lxqt-config-appearance/iconthemeconfig.h -+++ b/lxqt-config-appearance/iconthemeconfig.h -@@ -51,6 +51,9 @@ private: - public slots: - void initControls(); - -+signals: -+ void updateSettings(); -+ - private slots: - void iconThemeSelected(QTreeWidgetItem *item, int column); - }; ---- a/lxqt-config-appearance/main.cpp -+++ b/lxqt-config-appearance/main.cpp -@@ -34,6 +34,7 @@ - #include "lxqtthemeconfig.h" - #include "styleconfig.h" - #include "fontsconfig.h" -+#include "configothertoolkits.h" - - #include "../liblxqt-config-cursor/selectwnd.h" - -@@ -58,14 +59,19 @@ int main (int argc, char **argv) - - app.setActivationWindow(dialog); - -+ LXQt::Settings mConfigAppearanceSettings("lxqt-config-appearance"); -+ ConfigOtherToolKits *configOtherToolKits = new ConfigOtherToolKits(settings, &mConfigAppearanceSettings, dialog); -+ - QSettings& qtSettings = *settings; // use lxqt config file for Qt settings in Qt5. -- StyleConfig* stylePage = new StyleConfig(settings, &qtSettings, dialog); -+ StyleConfig* stylePage = new StyleConfig(settings, &qtSettings, &mConfigAppearanceSettings, configOtherToolKits, dialog); - dialog->addPage(stylePage, QObject::tr("Widget Style"), QStringList() << "preferences-desktop-theme" << "preferences-desktop"); - QObject::connect(dialog, SIGNAL(reset()), stylePage, SLOT(initControls())); -+ QObject::connect(stylePage, SIGNAL(updateSettings()), configOtherToolKits, SLOT(setConfig())); - - IconThemeConfig* iconPage = new IconThemeConfig(settings, dialog); - dialog->addPage(iconPage, QObject::tr("Icons Theme"), QStringList() << "preferences-desktop-icons" << "preferences-desktop"); - QObject::connect(dialog, SIGNAL(reset()), iconPage, SLOT(initControls())); -+ QObject::connect(iconPage, SIGNAL(updateSettings()), configOtherToolKits, SLOT(setConfig())); - - LXQtThemeConfig* themePage = new LXQtThemeConfig(settings, dialog); - dialog->addPage(themePage, QObject::tr("LXQt Theme"), QStringList() << "preferences-desktop-color" << "preferences-desktop"); -@@ -74,6 +80,7 @@ int main (int argc, char **argv) - FontsConfig* fontsPage = new FontsConfig(settings, &qtSettings, dialog); - dialog->addPage(fontsPage, QObject::tr("Font"), QStringList() << "preferences-desktop-font" << "preferences-desktop"); - QObject::connect(dialog, SIGNAL(reset()), fontsPage, SLOT(initControls())); -+ QObject::connect(fontsPage, SIGNAL(updateSettings()), configOtherToolKits, SLOT(setConfig())); - - SelectWnd* cursorPage = new SelectWnd(sessionSettings, dialog); - cursorPage->setCurrent(); ---- a/lxqt-config-appearance/styleconfig.cpp -+++ b/lxqt-config-appearance/styleconfig.cpp -@@ -41,25 +41,23 @@ - extern void qt_x11_apply_settings_in_all_apps(); - #endif - --StyleConfig::StyleConfig(LXQt::Settings* settings, QSettings* qtSettings, QWidget* parent) : -+StyleConfig::StyleConfig(LXQt::Settings* settings, QSettings* qtSettings, LXQt::Settings *configAppearanceSettings, ConfigOtherToolKits *configOtherToolKits, QWidget* parent) : - QWidget(parent), - ui(new Ui::StyleConfig), - mQtSettings(qtSettings), - mSettings(settings) - { -+ mConfigAppearanceSettings = configAppearanceSettings; -+ mConfigOtherToolKits = configOtherToolKits; - ui->setupUi(this); - -- connect(ui->styleList, SIGNAL(itemClicked(QTreeWidgetItem*,int)), -- this, SLOT(styleSelected(QTreeWidgetItem*,int))); -+ initControls(); - -- const auto keys = QStyleFactory::keys(); -- for(const QString& name : keys) -- { -- QTreeWidgetItem *item = new QTreeWidgetItem(QStringList(name)); -- ui->styleList->addTopLevelItem(item); -- } -+ connect(ui->gtk2ComboBox, SIGNAL(activated(const QString &)), this, SLOT(gtk2StyleSelected(const QString &))); -+ connect(ui->gtk3ComboBox, SIGNAL(activated(const QString &)), this, SLOT(gtk3StyleSelected(const QString &))); -+ connect(ui->qtComboBox, SIGNAL(activated(const QString &)), this, SLOT(qtStyleSelected(const QString &))); - -- initControls(); -+ connect(ui->advancedOptionsGroupBox, SIGNAL(toggled(bool)), this, SLOT(showAdvancedOptions(bool))); - - connect(ui->toolButtonStyle, SIGNAL(currentIndexChanged(int)), SLOT(toolButtonStyleSelected(int))); - connect(ui->singleClickActivate, SIGNAL(toggled(bool)), SLOT(singleClickActivateToggled(bool))); -@@ -74,22 +72,20 @@ StyleConfig::~StyleConfig() - - void StyleConfig::initControls() - { -- // read Qt style settings from Qt Trolltech.conf config -- mQtSettings->beginGroup(QLatin1String("Qt")); -- QString currentTheme = mQtSettings->value("style").toString(); -- mQtSettings->endGroup(); - -- QTreeWidgetItemIterator it(ui->styleList); -- while (*it) { -- if ((*it)->data(0, Qt::DisplayRole).toString() == currentTheme) -- { -- ui->styleList->setCurrentItem((*it)); -- break; -- } -- ++it; -- } -+ // Fill global themes -+ QStringList qtThemes = QStyleFactory::keys(); -+ QStringList gtk2Themes = mConfigOtherToolKits->getGTKThemes("2.0"); -+ QStringList gtk3Themes = mConfigOtherToolKits->getGTKThemes("3.0"); -+ -+ if(!mConfigAppearanceSettings->contains("ControlGTKThemeEnabled")) -+ mConfigAppearanceSettings->setValue("ControlGTKThemeEnabled", false); -+ bool controlGTKThemeEnabled = mConfigAppearanceSettings->value("ControlGTKThemeEnabled").toBool(); -+ -+ showAdvancedOptions(controlGTKThemeEnabled); -+ ui->advancedOptionsGroupBox->setChecked(controlGTKThemeEnabled); - -- // read other widget related settings form LXQt settings. -+ // read other widget related settings from LXQt settings. - QByteArray tb_style = mSettings->value("tool_button_style").toByteArray(); - // convert toolbar style name to value - QMetaEnum me = QToolBar::staticMetaObject.property(QToolBar::staticMetaObject.indexOfProperty("toolButtonStyle")).enumerator(); -@@ -101,24 +97,21 @@ void StyleConfig::initControls() - // activate item views with single click - ui->singleClickActivate->setChecked( mSettings->value("single_click_activate", false).toBool()); - -- update(); --} - -+ // Fill Qt themes -+ ui->qtComboBox->addItems(qtThemes); - --void StyleConfig::styleSelected(QTreeWidgetItem* item, int column) --{ -- Q_UNUSED(column); -- if (!item) -- return; -- QVariant themeName = item->data(0, Qt::DisplayRole); -- mQtSettings->beginGroup(QLatin1String("Qt")); -- mQtSettings->setValue("style", themeName); -- mQtSettings->endGroup(); -- mQtSettings->sync(); -+ // Fill GTK themes -+ ui->gtk2ComboBox->addItems(gtk2Themes); -+ ui->gtk3ComboBox->addItems(gtk3Themes); -+ -+ ui->gtk2ComboBox->setCurrentText(mConfigOtherToolKits->getGTKThemeFromRCFile("2.0")); -+ ui->gtk3ComboBox->setCurrentText(mConfigOtherToolKits->getGTKThemeFromRCFile("3.0")); -+ mSettings->beginGroup(QLatin1String("Qt")); -+ ui->qtComboBox->setCurrentText(mSettings->value("style").toString()); -+ mSettings->endGroup(); - --#ifdef Q_WS_X11 -- qt_x11_apply_settings_in_all_apps(); --#endif -+ update(); - } - - void StyleConfig::toolButtonStyleSelected(int index) -@@ -131,7 +124,8 @@ void StyleConfig::toolButtonStyleSelecte - if(str) - { - mSettings->setValue("tool_button_style", str); -- mSettings->sync(); -+ mSettings->sync(); -+ emit updateSettings(); - } - } - -@@ -141,3 +135,28 @@ void StyleConfig::singleClickActivateTog - mSettings->sync(); - } - -+void StyleConfig::qtStyleSelected(const QString &themeName) -+{ -+ mQtSettings->beginGroup(QLatin1String("Qt")); -+ mQtSettings->setValue("style", themeName); -+ mQtSettings->endGroup(); -+ mQtSettings->sync(); -+} -+ -+void StyleConfig::gtk3StyleSelected(const QString &themeName) -+{ -+ mConfigOtherToolKits->setGTKConfig("3.0", themeName); -+ mConfigOtherToolKits->setXSettingsConfig(); -+} -+ -+void StyleConfig::gtk2StyleSelected(const QString &themeName) -+{ -+ mConfigOtherToolKits->setGTKConfig("2.0", themeName); -+ mConfigOtherToolKits->setXSettingsConfig(); -+} -+ -+void StyleConfig::showAdvancedOptions(bool on) -+{ -+ ui->uniformThemeLabel->setVisible(on); -+ mConfigAppearanceSettings->setValue("ControlGTKThemeEnabled", on); -+} ---- a/lxqt-config-appearance/styleconfig.h -+++ b/lxqt-config-appearance/styleconfig.h -@@ -30,6 +30,7 @@ - - #include - #include -+#include "configothertoolkits.h" - - class QTreeWidgetItem; - class QSettings; -@@ -43,14 +44,24 @@ class StyleConfig : public QWidget - Q_OBJECT - - public: -- explicit StyleConfig(LXQt::Settings *settings, QSettings *qtSettings, QWidget *parent = 0); -+ explicit StyleConfig(LXQt::Settings *settings, -+ QSettings *qtSettings, LXQt::Settings *configAppearanceSettings, -+ ConfigOtherToolKits *configOtherToolKits, QWidget *parent = 0); - ~StyleConfig(); - - public slots: - void initControls(); - -+signals: -+ void updateSettings(); -+ - private slots: -- void styleSelected(QTreeWidgetItem* item, int column); -+ void gtk2StyleSelected(const QString &themeName); -+ void gtk3StyleSelected(const QString &themeName); -+ void qtStyleSelected(const QString &themeName); -+ -+ void showAdvancedOptions(bool on); -+ - void toolButtonStyleSelected(int index); - void singleClickActivateToggled(bool toggled); - -@@ -58,6 +69,8 @@ private: - Ui::StyleConfig *ui; - QSettings *mQtSettings; - LXQt::Settings *mSettings; -+ LXQt::Settings *mConfigAppearanceSettings; -+ ConfigOtherToolKits *mConfigOtherToolKits; - }; - - #endif // STYLECONFIG_H ---- a/lxqt-config-appearance/styleconfig.ui -+++ b/lxqt-config-appearance/styleconfig.ui -@@ -6,8 +6,8 @@ - - 0 - 0 -- 490 -- 363 -+ 609 -+ 344 - - - -@@ -24,38 +24,83 @@ - - - -- -- -+ -+ - -- -+ - 0 -- 1 -+ 0 - - -- -+ -+ -+ 16777215 -+ 16777215 -+ -+ -+ -+ Set GTK themes (GTK configuration files will be overwritten!) -+ -+ - true - -- -+ - false - -- -- false -- -- -- -- 1 -- -- -+ -+ -+ -+ -+ -+ -+ -+ 0 -+ 0 -+ -+ -+ -+ GTK 3 Theme -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ GTK 2 Theme -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ To attempt uniform theming, either select similar style/theme -+(if available) across all lists, or select 'gtk2' Qt style (if available) -+ to mimic GTK themes. -+ -+Make sure 'xsettingsd' is installed to help GTK applications apply -+themes on the fly. -+ -+ -+ -+ -+ -+ - - -- -+ - - - Toolbar button style: - - - -- -+ - - - -@@ -84,13 +129,23 @@ - - - -- -+ - - - Activate item on single click - - - -+ -+ -+ -+ -+ -+ -+ Qt Style -+ -+ -+ - - - diff --git a/debian/patches/mkpath-for-null-gtk-settings.patch b/debian/patches/mkpath-for-null-gtk-settings.patch deleted file mode 100644 index 1ea9e42..0000000 --- a/debian/patches/mkpath-for-null-gtk-settings.patch +++ /dev/null @@ -1,18 +0,0 @@ -Description: Make a path for GTK settings if it does not exist. -Author: P.L. Lucas -Bug: https://github.com/lxqt/lxqt/issues/1548 -Applied-Upstream: https://github.com/lxqt/lxqt-config/commit/5fe0f9288e432a669686af14657b7f508eefb77e -Last-Update: 2018-09-03 ---- a/lxqt-config-appearance/configothertoolkits.cpp -+++ b/lxqt-config-appearance/configothertoolkits.cpp -@@ -212,6 +212,10 @@ void ConfigOtherToolKits::writeConfig(QS - path = _get_config_path(path); - - QFile file(path); -+ if(! file.exists()) { -+ QFileInfo fileInfo(file); -+ QDir::home().mkpath(fileInfo.path()); -+ } - if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { - return; - } diff --git a/debian/patches/series b/debian/patches/series deleted file mode 100644 index 8faf170..0000000 --- a/debian/patches/series +++ /dev/null @@ -1,3 +0,0 @@ -gtk-appearance-settings.patch -set-default-gtk-theme.patch -mkpath-for-null-gtk-settings.patch diff --git a/debian/patches/set-default-gtk-theme.patch b/debian/patches/set-default-gtk-theme.patch deleted file mode 100644 index 35e1d7b..0000000 --- a/debian/patches/set-default-gtk-theme.patch +++ /dev/null @@ -1,72 +0,0 @@ -Description: Set default GTK theme if rc file doesn't exists. -Author: P.L. Lucas -Applied-Upstream: https://github.com/lxqt/lxqt-config/commit/4c3ad403dc14dde4fe41e56cf3272ac11e30346f -Last-Update: 2018-10-05 ---- -This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ ---- a/lxqt-config-appearance/configothertoolkits.cpp -+++ b/lxqt-config-appearance/configothertoolkits.cpp -@@ -34,6 +34,7 @@ - #include - #include - #include -+#include - - #include - #include -@@ -246,7 +247,7 @@ QString ConfigOtherToolKits::getGTKTheme - QFile file(gtkrcPath); - if(file.exists()) { - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) -- return QString(); -+ return getDefaultGTKTheme(); - while (!file.atEnd()) { - QByteArray line = file.readLine().trimmed(); - if(line.startsWith("gtk-theme-name")) { -@@ -264,7 +265,7 @@ QString ConfigOtherToolKits::getGTKTheme - QFile file(gtkrcPath); - if(file.exists()) { - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) -- return QString(); -+ return getDefaultGTKTheme(); - bool settingsFound = false; - while (!file.atEnd()) { - QByteArray line = file.readLine().trimmed(); -@@ -283,7 +284,26 @@ QString ConfigOtherToolKits::getGTKTheme - file.close(); - } - } -- return QString(); -+ return getDefaultGTKTheme(); -+} -+ -+QString ConfigOtherToolKits::getDefaultGTKTheme() -+{ -+ // Get the GTK default theme. Command line: -+ // $ gsettings get org.gnome.desktop.interface gtk-theme -+ QProcess gsettings; -+ QStringList args; -+ args << "get" << "org.gnome.desktop.interface" << "gtk-theme"; -+ gsettings.start("gsettings", args); -+ if(! gsettings.waitForFinished()) -+ return QString(); -+ QByteArray defaultTheme = gsettings.readAll().trimmed(); -+ gsettings.close(); -+ if(defaultTheme.size() <= 1) -+ return QString(); -+ // The theme has got quotation marks. Remove it: -+ defaultTheme.replace("'",""); -+ return QString(defaultTheme); - } - - void ConfigOtherToolKits::updateConfigFromSettings() ---- a/lxqt-config-appearance/configothertoolkits.h -+++ b/lxqt-config-appearance/configothertoolkits.h -@@ -42,6 +42,7 @@ public: - QString getGTKThemeFromRCFile(QString version); - QString getGTKConfigPath(QString version); - bool backupGTKSettings(QString version); -+ QString getDefaultGTKTheme(); - - public slots: - void setConfig();