diff options
author | Thomas James Alexander Thurman <tthurman@src.gnome.org> | 2006-05-09 01:10:49 +0000 |
---|---|---|
committer | Thomas James Alexander Thurman <tthurman@src.gnome.org> | 2006-05-09 01:10:49 +0000 |
commit | c62ed35d7552116451328b62a0cdf3a831070ce6 (patch) | |
tree | 116cf67cb1b0586e31f6fea5cc8d3c481080ff67 | |
parent | 245db41cf8469b889d2a77475aadba640a8b7c64 (diff) | |
download | metacity-c62ed35d7552116451328b62a0cdf3a831070ce6.tar.gz |
#113163 finishing touches: refreshes when theme changes
-rw-r--r-- | src/iconcache.c | 22 | ||||
-rw-r--r-- | src/iconcache.h | 1 | ||||
-rw-r--r-- | src/ui.c | 2 | ||||
-rw-r--r-- | src/window.c | 3 | ||||
-rw-r--r-- | src/window.h | 3 |
5 files changed, 29 insertions, 2 deletions
diff --git a/src/iconcache.c b/src/iconcache.c index 0b240f3a..65bf477c 100644 --- a/src/iconcache.c +++ b/src/iconcache.c @@ -24,6 +24,7 @@ #include "ui.h" #include "errors.h" #include "theme.h" +#include "window.h" #include <X11/Xatom.h> @@ -863,3 +864,24 @@ meta_read_icons (MetaScreen *screen, /* found nothing new */ return FALSE; } + +void +meta_invalidate_default_icons (void) +{ + GSList *displays, *windows; + + for (displays = meta_displays_list (); displays != NULL; displays = displays->next) { + + for (windows = meta_display_list_windows (displays->data); windows != NULL; windows = windows->next) { + + MetaWindow *window = (MetaWindow*)windows->data; + + if (window->icon_cache.origin == USING_FALLBACK_ICON) { + clear_icon_cache (&(window->icon_cache), FALSE); + meta_window_update_icon_now (window); + } + } + + g_slist_free (windows); + } +} diff --git a/src/iconcache.h b/src/iconcache.h index eadf5217..410dee97 100644 --- a/src/iconcache.h +++ b/src/iconcache.h @@ -57,6 +57,7 @@ gboolean meta_read_icons (MetaScreen *screen, int ideal_mini_width, int ideal_mini_height); +void meta_invalidate_default_icons (void); #endif @@ -28,6 +28,7 @@ #include "menu.h" #include "core.h" #include "theme.h" +#include "iconcache.h" #include "eggaccelerators.h" @@ -731,6 +732,7 @@ meta_ui_set_current_theme (const char *name, gboolean force_reload) { meta_theme_set_current (name, force_reload); + meta_invalidate_default_icons (); } gboolean diff --git a/src/window.c b/src/window.c index 16bdf09e..c82f5d9d 100644 --- a/src/window.c +++ b/src/window.c @@ -107,7 +107,6 @@ static void meta_window_flush_calc_showing (MetaWindow *window); static void meta_window_unqueue_move_resize (MetaWindow *window); -static void meta_window_update_icon_now (MetaWindow *window); static void meta_window_unqueue_update_icon (MetaWindow *window); static gboolean queue_calc_showing_func (MetaWindow *window, @@ -5330,7 +5329,7 @@ redraw_icon (MetaWindow *window) meta_ui_queue_frame_draw (window->screen->ui, window->frame->xwindow); } -static void +void meta_window_update_icon_now (MetaWindow *window) { GdkPixbuf *icon; diff --git a/src/window.h b/src/window.h index f3eb4d38..75163812 100644 --- a/src/window.h +++ b/src/window.h @@ -589,4 +589,7 @@ void meta_window_set_user_time (MetaWindow *window, void meta_window_set_demands_attention (MetaWindow *window); void meta_window_unset_demands_attention (MetaWindow *window); + +void meta_window_update_icon_now (MetaWindow *window); + #endif |