Skip to content

Commit

Permalink
Merge pull request #16153 from light-and-ray/fix_ui_flashing_on_reloa…
Browse files Browse the repository at this point in the history
…d_and_fast_scrollong

fix ui flashing on reloading and fast scrollong
  • Loading branch information
AUTOMATIC1111 committed Jul 7, 2024
1 parent 340a910 commit b5481c6
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
41 changes: 41 additions & 0 deletions modules/shared_gradio_themes.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,3 +69,44 @@ def reload_gradio_theme(theme_name=None):
# append additional values gradio_theme
shared.gradio_theme.sd_webui_modal_lightbox_toolbar_opacity = shared.opts.sd_webui_modal_lightbox_toolbar_opacity
shared.gradio_theme.sd_webui_modal_lightbox_icon_opacity = shared.opts.sd_webui_modal_lightbox_icon_opacity


def resolve_var(name: str, gradio_theme=None, history=None):
"""
Attempt to resolve a theme variable name to its value
Parameters:
name (str): The name of the theme variable
ie "background_fill_primary", "background_fill_primary_dark"
spaces and asterisk (*) prefix is removed from name before lookup
gradio_theme (gradio.themes.ThemeClass): The theme object to resolve the variable from
blank to use the webui default shared.gradio_theme
history (list): A list of previously resolved variables to prevent circular references
for regular use leave blank
Returns:
str: The resolved value
Error handling:
return either #000000 or #ffffff depending on initial name ending with "_dark"
"""
try:
if history is None:
history = []
if gradio_theme is None:
gradio_theme = shared.gradio_theme

name = name.strip()
name = name[1:] if name.startswith("*") else name

if name in history:
raise ValueError(f'Circular references: name "{name}" in {history}')

if value := getattr(gradio_theme, name, None):
return resolve_var(value, gradio_theme, history + [name])
else:
return name

except Exception:
name = history[0] if history else name
errors.report(f'resolve_color({name})', exc_info=True)
return '#000000' if name.endswith("_dark") else '#ffffff'
5 changes: 5 additions & 0 deletions modules/ui_gradio_extensions.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,11 @@ def stylesheet(fn):
if os.path.exists(user_css):
head += stylesheet(user_css)

from modules.shared_gradio_themes import resolve_var
light = resolve_var('background_fill_primary')
dark = resolve_var('background_fill_primary_dark')
head += f'<style>html {{ background-color: {light}; }} @media (prefers-color-scheme: dark) {{ html {{background-color: {dark}; }} }}</style>'

return head


Expand Down

0 comments on commit b5481c6

Please sign in to comment.