Remove support for custom colors

Since the move to GTK3 custom color support is extremely hacky and buggy:

- It relies on gtk_widget_override_color() which is deprecated
- Only one call to gtk_widget_override_color() is functional, successive
calls are ignored, leading to the menu not changing colors when the custom
colors are changed or enabled/disabled.
- RegenPlugins leads to a loss of color.
- Theme changes are broken due to overridden colors.

The feature is also very niche and quite unecessary. If a custom color is
better than the default one we should apply the change in the theme or
define a new theme which inherits ours and simply defines the menu
differently.

The way to do this, in line with GTK's design, is via CSS at theme level.
This commit is contained in:
Clement Lefebvre 2019-07-22 13:20:51 +02:00
parent 3ad195599b
commit b7a1fa0b94
6 changed files with 4 additions and 114 deletions

View File

@ -63,9 +63,6 @@ class MainWindow(object):
builder.connect_signals(self) builder.connect_signals(self)
self.panesToColor = []
self.headingsToColor = []
self.window.connect("key-press-event", self.onKeyPress) self.window.connect("key-press-event", self.onKeyPress)
self.window.connect("focus-in-event", self.onFocusIn) self.window.connect("focus-in-event", self.onFocusIn)
self.loseFocusId = self.window.connect("focus-out-event", self.onFocusOut) self.loseFocusId = self.window.connect("focus-out-event", self.onFocusOut)
@ -79,9 +76,6 @@ class MainWindow(object):
self.settings.connect("changed::plugins-list", self.RegenPlugins) self.settings.connect("changed::plugins-list", self.RegenPlugins)
self.settings.connect("changed::start-with-favorites", self.toggleStartWithFavorites) self.settings.connect("changed::start-with-favorites", self.toggleStartWithFavorites)
self.settings.connect("changed::tooltips-enabled", self.toggleTooltipsEnabled) self.settings.connect("changed::tooltips-enabled", self.toggleTooltipsEnabled)
self.settings.connect("changed::use-custom-color", self.toggleUseCustomColor)
self.settings.connect("changed::custom-heading-color", self.toggleCustomHeadingColor)
self.settings.connect("changed::custom-color", self.toggleCustomBackgroundColor)
self.getSetGSettingEntries() self.getSetGSettingEntries()
@ -110,38 +104,20 @@ class MainWindow(object):
def toggleStartWithFavorites(self, settings, key): def toggleStartWithFavorites(self, settings, key):
self.startWithFavorites = settings.get_boolean(key) self.startWithFavorites = settings.get_boolean(key)
def toggleUseCustomColor(self, settings, key):
self.usecustomcolor = settings.get_boolean(key)
self.loadTheme()
def toggleCustomBackgroundColor(self, settings, key):
self.customcolor = settings.get_string(key)
self.setCustomColors()
def toggleCustomHeadingColor(self, settings, key):
self.customheadingcolor = settings.get_string(key)
self.setCustomColors()
def getSetGSettingEntries(self): def getSetGSettingEntries(self):
self.dottedfile = os.path.join(self.path, "dotted.png") self.dottedfile = os.path.join(self.path, "dotted.png")
self.pluginlist = self.settings.get_strv("plugins-list") self.pluginlist = self.settings.get_strv("plugins-list")
self.usecustomcolor = self.settings.get_boolean("use-custom-color")
self.customcolor = self.settings.get_string("custom-color")
self.customheadingcolor = self.settings.get_string("custom-heading-color")
self.offset = self.settings.get_int("offset") self.offset = self.settings.get_int("offset")
self.enableTooltips = self.settings.get_boolean("tooltips-enabled") self.enableTooltips = self.settings.get_boolean("tooltips-enabled")
self.startWithFavorites = self.settings.get_boolean("start-with-favorites") self.startWithFavorites = self.settings.get_boolean("start-with-favorites")
def PopulatePlugins(self): def PopulatePlugins(self):
self.panesToColor = []
self.headingsToColor = []
PluginPane = Gtk.EventBox() PluginPane = Gtk.EventBox()
PluginPane.show() PluginPane.show()
PaneLadder = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) PaneLadder = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
PluginPane.add(PaneLadder) PluginPane.add(PaneLadder)
ImageBox = Gtk.EventBox() ImageBox = Gtk.EventBox()
ImageBox.show() ImageBox.show()
self.panesToColor.extend([PluginPane, ImageBox])
seperatorImage = GdkPixbuf.Pixbuf.new_from_file(self.dottedfile) seperatorImage = GdkPixbuf.Pixbuf.new_from_file(self.dottedfile)
@ -194,7 +170,6 @@ class MainWindow(object):
MyPlugin.icon = 'mate-logo-icon.png' MyPlugin.icon = 'mate-logo-icon.png'
print("Unable to load %s plugin" % plugin) print("Unable to load %s plugin" % plugin)
self.panesToColor.append(MyPlugin.content_holder)
MyPlugin.content_holder.show() MyPlugin.content_holder.show()
VBox1 = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) VBox1 = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
@ -204,7 +179,6 @@ class MainWindow(object):
Align1 = Gtk.Alignment.new(0, 0, 0, 0) Align1 = Gtk.Alignment.new(0, 0, 0, 0)
Align1.set_padding(10, 5, 10, 0) Align1.set_padding(10, 5, 10, 0)
Align1.add(label1) Align1.add(label1)
self.headingsToColor.append(label1)
Align1.show() Align1.show()
label1.show() label1.show()
heading = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) heading = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
@ -232,10 +206,6 @@ class MainWindow(object):
MyPlugin.do_plugin() MyPlugin.do_plugin()
if hasattr(MyPlugin, 'height'): if hasattr(MyPlugin, 'height'):
MyPlugin.content_holder.set_size_request(-1, MyPlugin.height) MyPlugin.content_holder.set_size_request(-1, MyPlugin.height)
if hasattr(MyPlugin, 'itemstocolor'):
self.panesToColor.extend(MyPlugin.itemstocolor)
if hasattr(MyPlugin, 'headingstocolor'):
self.headingsToColor.extend(MyPlugin.headingstocolor)
except: except:
# create traceback # create traceback
info = sys.exc_info() info = sys.exc_info()
@ -254,7 +224,6 @@ class MainWindow(object):
PaneLadder = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) PaneLadder = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
PluginPane.add(PaneLadder) PluginPane.add(PaneLadder)
ImageBox = Gtk.EventBox() ImageBox = Gtk.EventBox()
self.panesToColor.extend([PluginPane, ImageBox])
ImageBox.show() ImageBox.show()
PluginPane.show_all() PluginPane.show_all()
@ -274,47 +243,6 @@ class MainWindow(object):
self.paneholder.pack_start(ImageBox, False, False, 0) self.paneholder.pack_start(ImageBox, False, False, 0)
self.paneholder.pack_start(PluginPane, False, False, 0) self.paneholder.pack_start(PluginPane, False, False, 0)
# A little bit hacky but works.
@staticmethod
def getDefaultColors():
widget = Gtk.EventBox()
widget.show()
context = widget.get_style_context()
context.set_state(Gtk.StateFlags.NORMAL)
context.add_class(Gtk.STYLE_CLASS_DEFAULT)
context.add_class(Gtk.STYLE_CLASS_BACKGROUND)
fgColor = context.get_color(context.get_state())
bgColor = context.get_background_color(context.get_state())
return {"fg": fgColor, "bg": bgColor}
def loadTheme(self):
self.setCustomColors()
def setCustomColors(self):
# Panes
for item in self.panesToColor:
context = item.get_style_context()
if self.usecustomcolor:
color = Gdk.RGBA()
color.parse(self.customcolor)
item.override_background_color(context.get_state(), color)
else:
colors = self.getDefaultColors()
item.override_background_color(context.get_state(), colors["bg"])
# Headings
for item in self.headingsToColor:
context = item.get_style_context()
if self.usecustomcolor:
color = Gdk.RGBA()
color.parse(self.customheadingcolor)
item.override_color(context.get_state(), color)
else:
colors = self.getDefaultColors()
item.override_color(context.get_state(), colors["fg"])
def setTooltip(self, widget, tip): def setTooltip(self, widget, tip):
self.tooltipsWidgets.append(widget) self.tooltipsWidgets.append(widget)
widget.set_tooltip_text(tip) widget.set_tooltip_text(tip)
@ -343,7 +271,6 @@ class MainWindow(object):
self.getSetGSettingEntries() self.getSetGSettingEntries()
self.PopulatePlugins() self.PopulatePlugins()
self.toggleTooltipsEnabled(self.settings, "tooltips-enabled") self.toggleTooltipsEnabled(self.settings, "tooltips-enabled")
self.loadTheme()
#print NAME+u" reloaded" #print NAME+u" reloaded"
@ -430,7 +357,6 @@ class MenuWin(object):
self.mainwin.window.set_name("mintmenu") # Name used in Gtk RC files self.mainwin.window.set_name("mintmenu") # Name used in Gtk RC files
self.applyTheme() self.applyTheme()
self.mainwin.loadTheme()
if self.mainwin.icon: if self.mainwin.icon:
Gtk.Window.set_default_icon_name(self.mainwin.icon) Gtk.Window.set_default_icon_name(self.mainwin.icon)
@ -567,7 +493,6 @@ class MenuWin(object):
def changeTheme(self, *args): def changeTheme(self, *args):
self.reloadSettings() self.reloadSettings()
self.applyTheme() self.applyTheme()
self.mainwin.loadTheme()
def applyTheme(self): def applyTheme(self):
style_settings = Gtk.Settings.get_default() style_settings = Gtk.Settings.get_default()

View File

@ -212,7 +212,6 @@ class pluginclass(object):
self.applicationsScrolledWindow = self.builder.get_object("applicationsScrolledWindow") self.applicationsScrolledWindow = self.builder.get_object("applicationsScrolledWindow")
self.headingstocolor = [self.builder.get_object("label6"), self.builder.get_object("label2")]
self.numApps = 0 self.numApps = 0
# These properties are NECESSARY to maintain consistency # These properties are NECESSARY to maintain consistency
@ -225,11 +224,6 @@ class pluginclass(object):
# This should be the first item added to the window in glade # This should be the first item added to the window in glade
self.content_holder = self.builder.get_object("Applications") self.content_holder = self.builder.get_object("Applications")
# Items to get custom colors
self.itemstocolor = [self.builder.get_object("viewport1"),
self.builder.get_object("viewport2"),
self.builder.get_object("viewport3")]
# Unset all timers # Unset all timers
self.filterTimer = None self.filterTimer = None
self.menuChangedTimer = None self.menuChangedTimer = None

View File

@ -453,15 +453,6 @@ class MenuApplicationLauncher(ApplicationLauncher):
appComment = self.appComment appComment = self.appComment
if self.highlight: if self.highlight:
try: try:
#color = self.labelBox.get_style_context().get_color(Gtk.StateFlags.SELECTED).to_string()
#if len(color) > 0 and color[0] == "#":
#appName = "<span foreground=\"%s\"><b>%s</b></span>" % (color, appName);
#appComment = "<span foreground=\"%s\"><b>%s</b></span>" % (color, appComment);
#appName = "<b>%s</b>" % (appName);
#appComment = "<b>%s</b>" % (appComment);
#else:
#appName = "<b>%s</b>" % (appName);
#appComment = "<b>%s</b>" % (appComment);
appName = "<b>%s</b>" % appName appName = "<b>%s</b>" % appName
appComment = "<b>%s</b>" % appComment appComment = "<b>%s</b>" % appComment
except Exception as e: except Exception as e:

View File

@ -43,9 +43,6 @@ class pluginclass(object):
# This should be the first item added to the window in glade # This should be the first item added to the window in glade
self.content_holder = self.builder.get_object("System") self.content_holder = self.builder.get_object("System")
# Items to get custom colors
self.itemstocolor = [self.builder.get_object("viewport2")]
# Gconf stuff # Gconf stuff
self.settings = Gio.Settings("com.linuxmint.mintmenu.plugins.system_management") self.settings = Gio.Settings("com.linuxmint.mintmenu.plugins.system_management")

View File

@ -93,10 +93,10 @@ class mintMenuPreferences():
page = SettingsPage() page = SettingsPage()
self.builder.get_object("box_appearance").add(page) self.builder.get_object("box_appearance").add(page)
section = page.add_section(_("Colors"), _("Custom colors and theme")) section = page.add_section(_("Appearance"), _("Custom theme"))
section.add_row(GSettingsSwitch(_("Use custom colors"), "com.linuxmint.mintmenu", "use-custom-color")) # section.add_row(GSettingsSwitch(_("Use custom colors"), "com.linuxmint.mintmenu", "use-custom-color"))
section.add_reveal_row(GSettingsColorChooser(_("Headings"), "com.linuxmint.mintmenu", "custom-heading-color"), "com.linuxmint.mintmenu", "use-custom-color") # section.add_reveal_row(GSettingsColorChooser(_("Headings"), "com.linuxmint.mintmenu", "custom-heading-color"), "com.linuxmint.mintmenu", "use-custom-color")
section.add_reveal_row(GSettingsColorChooser(_("Background"), "com.linuxmint.mintmenu", "custom-color"), "com.linuxmint.mintmenu", "use-custom-color") # section.add_reveal_row(GSettingsColorChooser(_("Background"), "com.linuxmint.mintmenu", "custom-color"), "com.linuxmint.mintmenu", "use-custom-color")
options = [] options = []
options.append(["default", _("Desktop theme"), "default"]) options.append(["default", _("Desktop theme"), "default"])
themes = glob.glob("/usr/share/themes/*/*/gtkrc") themes = glob.glob("/usr/share/themes/*/*/gtkrc")

View File

@ -8,12 +8,6 @@
<description></description> <description></description>
</key> </key>
<key type="b" name="use-custom-color">
<default>false</default>
<summary></summary>
<description></description>
</key>
<key type="b" name="tooltips-enabled"> <key type="b" name="tooltips-enabled">
<default>false</default> <default>false</default>
<summary></summary> <summary></summary>
@ -68,17 +62,6 @@
<description></description> <description></description>
</key> </key>
<key type="s" name="custom-color">
<default>"#DEDEDE"</default>
<summary></summary>
<description></description>
</key>
<key type="s" name="custom-heading-color">
<default>"#3C3C3C"</default>
<summary></summary>
<description></description>
</key>
</schema> </schema>