summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas James Alexander Thurman <tthurman@src.gnome.org>2006-05-09 01:10:49 +0000
committerThomas James Alexander Thurman <tthurman@src.gnome.org>2006-05-09 01:10:49 +0000
commitc62ed35d7552116451328b62a0cdf3a831070ce6 (patch)
tree116cf67cb1b0586e31f6fea5cc8d3c481080ff67
parent245db41cf8469b889d2a77475aadba640a8b7c64 (diff)
downloadmetacity-c62ed35d7552116451328b62a0cdf3a831070ce6.tar.gz
#113163 finishing touches: refreshes when theme changes
-rw-r--r--src/iconcache.c22
-rw-r--r--src/iconcache.h1
-rw-r--r--src/ui.c2
-rw-r--r--src/window.c3
-rw-r--r--src/window.h3
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
diff --git a/src/ui.c b/src/ui.c
index baeb2889..4f01ef52 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -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