From c726a1f709484da690a6fbcc7f6b8b4934660290 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Mon, 28 May 2007 13:37:32 +0000 Subject: [PATCH] set the current theme in a root property --- openbox/openbox.c | 3 +++ openbox/prop.c | 1 + openbox/prop.h | 1 + openbox/screen.c | 1 + render/theme.c | 3 +++ render/theme.h | 1 + 6 files changed, 10 insertions(+) diff --git a/openbox/openbox.c b/openbox/openbox.c index ce92d522..42a062be 100644 --- a/openbox/openbox.c +++ b/openbox/openbox.c @@ -273,6 +273,9 @@ gint main(gint argc, gchar **argv) } if (ob_rr_theme == NULL) ob_exit_with_error(_("Unable to load a theme.")); + + PROP_SETS(RootWindow(ob_display, ob_screen), + ob_theme, theme->name); } if (reconfigure) { diff --git a/openbox/prop.c b/openbox/prop.c index b0960bc1..aec146d5 100644 --- a/openbox/prop.c +++ b/openbox/prop.c @@ -171,6 +171,7 @@ void prop_startup() */ CREATE(openbox_pid, "_OPENBOX_PID"); + CREATE(ob_theme, "_OB_THEME"); CREATE(ob_wm_action_undecorate, "_OB_WM_ACTION_UNDECORATE"); CREATE(ob_wm_state_undecorated, "_OB_WM_STATE_UNDECORATED"); CREATE(ob_control, "_OB_CONTROL"); diff --git a/openbox/prop.h b/openbox/prop.h index 93821c87..b9d6795e 100644 --- a/openbox/prop.h +++ b/openbox/prop.h @@ -193,6 +193,7 @@ typedef struct Atoms { Atom ob_wm_action_undecorate; Atom ob_wm_state_undecorated; Atom openbox_pid; /* this is depreecated in favour of ob_control */ + Atom ob_theme; Atom ob_control; } Atoms; Atoms prop_atoms; diff --git a/openbox/screen.c b/openbox/screen.c index 2ada7438..e5a9af3b 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -294,6 +294,7 @@ gboolean screen_annex() supported[i++] = prop_atoms.ob_wm_action_undecorate; supported[i++] = prop_atoms.ob_wm_state_undecorated; supported[i++] = prop_atoms.openbox_pid; + supported[i++] = prop_atoms.ob_theme; supported[i++] = prop_atoms.ob_control; g_assert(i == num_support); diff --git a/render/theme.c b/render/theme.c index 97f5e1f5..b4d86918 100644 --- a/render/theme.c +++ b/render/theme.c @@ -95,6 +95,7 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name, theme = g_new0(RrTheme, 1); theme->inst = inst; + theme->name = g_strdup(name); theme->a_disabled_focused_max = RrAppearanceNew(inst, 1); theme->a_disabled_unfocused_max = RrAppearanceNew(inst, 1); @@ -1192,6 +1193,8 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name, void RrThemeFree(RrTheme *theme) { if (theme) { + g_free(theme->name); + RrColorFree(theme->menu_border_color); RrColorFree(theme->frame_focused_border_color); RrColorFree(theme->frame_unfocused_border_color); diff --git a/render/theme.h b/render/theme.h index 4e87fb12..dda67071 100644 --- a/render/theme.h +++ b/render/theme.h @@ -230,6 +230,7 @@ struct _RrTheme { RrAppearance *osd_hilite_label; /* can be parent relative */ RrAppearance *osd_unhilite_fg; /* can never be parent relative */ + gchar *name; }; /*! The font values are all optional. If a NULL is used for any of them, then -- 2.44.0