Skip to content

Commit

Permalink
Fix background css override
Browse files Browse the repository at this point in the history
fix #1326

Signed-off-by: Gaetan Semet <gaetan@xeberon.net>
  • Loading branch information
gsemet committed May 17, 2018
1 parent 1ab678e commit 045bab9
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 17 deletions.
1 change: 1 addition & 0 deletions NEWS.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Bug Fixes

- Fix transparency issue
- Fix right-click on link
- Fix bad css override on check tab background (#1326)
- Fix Guake application icon not displayed with German locale
- fix ctrl+click on hyperlinks on VTE 0.50 (#1295)
- Fixed "Gruvbox Dark" color palette (swapped foreground and background)
Expand Down
2 changes: 2 additions & 0 deletions docs/source/user/features.rst
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ Gtk Theme

Guake allows you to choose a different Gtk theme than your environment.

.. note:: You need to restart Guake after changing the GTK theme.

Quick Open, hyperlink and Search on web
=======================================

Expand Down
51 changes: 34 additions & 17 deletions guake/guake_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@
from guake.settings import Settings
from guake.simplegladeapp import SimpleGladeApp
from guake.terminal import GuakeTerminalBox
from guake.theme import get_gtk_theme
from guake.theme import select_gtk_theme
from guake.utils import get_server_time
from locale import gettext as _
Expand Down Expand Up @@ -154,24 +155,22 @@ class Guake(SimpleGladeApp):
"""

def __init__(self):
super(Guake, self).__init__(gladefile('guake.glade'))

self.add_callbacks(self)

schema_source = Gio.SettingsSchemaSource.new_from_directory(
SCHEMA_DIR, Gio.SettingsSchemaSource.get_default(), False
)

self.settings = Settings(schema_source)
select_gtk_theme(self.settings)

super(Guake, self).__init__(gladefile('guake.glade'))

self.add_callbacks(self)

self.debug_mode = self.settings.general.get_boolean('debug-mode')
setupLogging(self.debug_mode)
log.info('Guake Terminal %s', guake_version())
log.info('VTE %s', vte_version())
log.info('Gtk %s', gtk_version())

select_gtk_theme(self.settings)
self._patch_theme()

self.prompt_dialog = None
self.hidden = True
self.forceHide = False
Expand Down Expand Up @@ -407,24 +406,42 @@ def window_event(*args):
log.info("Guake initialized")

def _patch_theme(self):
style_provider = Gtk.CssProvider()
win = Gtk.Window()
style_context = win.get_style_context()
theme_name, variant = get_gtk_theme(self.settings)

def rgba_to_hex(color):
return "#{0:02x}{1:02x}{2:02x}".format(
int(color.red * 255), int(color.green * 255), int(color.blue * 255)
)

selected_bg_color = rgba_to_hex(style_context.lookup_color('theme_selected_bg_color')[1])
style_context = self.get_widget("window-root").get_style_context()
# for n in [
# "inverted_bg_color",
# "inverted_fg_color",
# "selected_bg_color",
# "selected_fg_color",
# "theme_inverted_bg_color",
# "theme_inverted_fg_color",
# "theme_selected_bg_color",
# "theme_selected_fg_color",
# ]:
# s = style_context.lookup_color(n)
# print(n, s, rgba_to_hex(s[1]))
selected_fg_color = rgba_to_hex(style_context.lookup_color("theme_selected_fg_color")[1])
selected_bg_color = rgba_to_hex(style_context.lookup_color("theme_selected_bg_color")[1])
log.debug(
"Patching theme '%s' (prefer dark = '%r'), overriding tab 'checked' state': "
"foreground: %r, background: %r", theme_name, "yes"
if variant == "dark" else "no", selected_fg_color, selected_bg_color
)
css_data = dedent(
"""
.tab:checked {{
color: white;
background-color: {};
.custom_tab:checked {{
color: {selected_fg_color};
background: {selected_bg_color};
}}
""".format(selected_bg_color)
""".format(selected_bg_color=selected_bg_color, selected_fg_color=selected_fg_color)
).encode()
style_provider = Gtk.CssProvider()
style_provider.load_from_data(css_data)
Gtk.StyleContext.add_provider_for_screen(
Gdk.Screen.get_default(), style_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
Expand Down Expand Up @@ -1802,7 +1819,7 @@ def add_tab(self, directory=None):
bnt = Gtk.RadioButton(group=parent, label=label, use_underline=False)
bnt.set_property('can-focus', False)
bnt.set_property('draw-indicator', False)
bnt.get_style_context().add_class("tab")
bnt.get_style_context().add_class("custom_tab")
bnt.connect('button-press-event', self.show_tab_menu)
bnt.connect('button-press-event', self.middle_button_click)
bnt.connect('button-press-event', self.show_rename_current_tab_dialog)
Expand Down
6 changes: 6 additions & 0 deletions guake/theme.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,9 @@ def select_gtk_theme(settings):
prefer_dark_theme = settings.general.get_boolean('gtk-prefer-dark-theme')
log.debug("Prefer dark theme: %r", prefer_dark_theme)
gtk_settings.set_property("gtk-application-prefer-dark-theme", prefer_dark_theme)


def get_gtk_theme(settings):
gtk_theme_name = settings.general.get_string('gtk-theme-name')
prefer_dark_theme = settings.general.get_boolean('gtk-prefer-dark-theme')
return (gtk_theme_name, "dark" if prefer_dark_theme else None)
1 change: 1 addition & 0 deletions releasenotes/notes/bugfix-bb8c6dcf8cbd3b20.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
fixes:
- Fix transparency issue #1323
- Fix right-click on link #1311
- Fix bad css override on check tab background (#1326)

0 comments on commit 045bab9

Please sign in to comment.