]> Dogcows Code - chaz/openbox/blobdiff - render/theme.c
alpha3
[chaz/openbox] / render / theme.c
index a8a3eda2cb8a57e27f507781d03118c996226fe5..cfbc5f9ce868f850c7dabe4477d25e996296a071 100644 (file)
@@ -34,6 +34,8 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
 
     theme->a_disabled_focused_max = RrAppearanceNew(inst, 1);
     theme->a_disabled_unfocused_max = RrAppearanceNew(inst, 1);
+    theme->a_hover_focused_max = RrAppearanceNew(inst, 1);
+    theme->a_hover_unfocused_max = RrAppearanceNew(inst, 1);
     theme->a_focused_unpressed_max = RrAppearanceNew(inst, 1);
     theme->a_focused_pressed_max = RrAppearanceNew(inst, 1);
     theme->a_focused_pressed_set_max = RrAppearanceNew(inst, 1);
@@ -131,11 +133,6 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
             mjust = RR_JUSTIFY_CENTER;
     }
 
-    /* load the title layout */
-    if (!read_string(db, "window.title.layout", &font_str))
-        font_str = "NLIMC";
-    theme->title_layout = g_strdup(font_str);
-
     /* load direct dimensions */
     if (!read_int(db, "menuOverlap", &theme->menu_overlap) ||
        theme->menu_overlap < 0 || theme->menu_overlap > 20)
@@ -171,12 +168,29 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
        theme->title_unfocused_color = RrColorNew(inst, 0xff, 0xff, 0xff);
     if (!read_color(db, inst,
                     "window.button.focus.picColor",
-                    &theme->titlebut_focused_color))
-       theme->titlebut_focused_color = RrColorNew(inst, 0, 0, 0);
+                    &theme->titlebut_focused_unpressed_color))
+       theme->titlebut_focused_unpressed_color = RrColorNew(inst, 0, 0, 0);
     if (!read_color(db, inst,
                     "window.button.unfocus.picColor",
-                    &theme->titlebut_unfocused_color))
-       theme->titlebut_unfocused_color = RrColorNew(inst, 0xff, 0xff, 0xff);
+                    &theme->titlebut_unfocused_unpressed_color))
+       theme->titlebut_unfocused_unpressed_color =
+            RrColorNew(inst, 0xff, 0xff, 0xff);
+    if (!read_color(db, inst,
+                    "window.button.pressed.focus.picColor",
+                    &theme->titlebut_focused_pressed_color))
+       theme->titlebut_focused_pressed_color =
+            RrColorNew(inst,
+                       theme->titlebut_focused_unpressed_color->r,
+                       theme->titlebut_focused_unpressed_color->g,
+                       theme->titlebut_focused_unpressed_color->b);
+    if (!read_color(db, inst,
+                    "window.button.pressed.unfocus.picColor",
+                    &theme->titlebut_unfocused_pressed_color))
+       theme->titlebut_unfocused_pressed_color =
+            RrColorNew(inst,
+                       theme->titlebut_unfocused_unpressed_color->r,
+                       theme->titlebut_unfocused_unpressed_color->g,
+                       theme->titlebut_unfocused_unpressed_color->b);
     if (!read_color(db, inst,
                     "window.button.disabled.focus.picColor",
                     &theme->titlebut_disabled_focused_color))
@@ -186,6 +200,22 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
                     "window.button.disabled.unfocus.picColor",
                     &theme->titlebut_disabled_unfocused_color))
        theme->titlebut_disabled_unfocused_color = RrColorNew(inst, 0, 0, 0);
+    if (!read_color(db, inst,
+                    "window.button.hover.focus.picColor",
+                    &theme->titlebut_hover_focused_color))
+       theme->titlebut_hover_focused_color =
+            RrColorNew(inst,
+                       theme->titlebut_focused_unpressed_color->r,
+                       theme->titlebut_focused_unpressed_color->g,
+                       theme->titlebut_focused_unpressed_color->b);
+    if (!read_color(db, inst,
+                    "window.button.hover.unfocus.picColor",
+                    &theme->titlebut_hover_unfocused_color))
+       theme->titlebut_hover_unfocused_color =
+            RrColorNew(inst,
+                       theme->titlebut_unfocused_unpressed_color->r,
+                       theme->titlebut_unfocused_unpressed_color->g,
+                       theme->titlebut_unfocused_unpressed_color->b);
     if (!read_color(db, inst,
                     "menu.title.textColor", &theme->menu_title_color))
         theme->menu_title_color = RrColorNew(inst, 0, 0, 0);
@@ -359,11 +389,27 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
                         theme->a_unfocused_unpressed_max,
                          TRUE))
        set_default_appearance(theme->a_unfocused_unpressed_max);
+    if (!read_appearance(db, inst,
+                         "window.button.hover.focus",
+                        theme->a_hover_focused_max,
+                         TRUE))
+        theme->a_hover_focused_max =
+            RrAppearanceCopy(theme->a_focused_unpressed_max);
+    if (!read_appearance(db, inst,
+                         "window.button.hover.unfocus",
+                        theme->a_hover_unfocused_max,
+                         TRUE))
+        theme->a_hover_unfocused_max =
+            RrAppearanceCopy(theme->a_unfocused_unpressed_max);
 
     theme->a_disabled_focused_close =
         RrAppearanceCopy(theme->a_disabled_focused_max);
     theme->a_disabled_unfocused_close =
         RrAppearanceCopy(theme->a_disabled_unfocused_max);
+    theme->a_hover_focused_close =
+        RrAppearanceCopy(theme->a_hover_focused_max);
+    theme->a_hover_unfocused_close =
+        RrAppearanceCopy(theme->a_hover_unfocused_max);
     theme->a_unfocused_unpressed_close =
         RrAppearanceCopy(theme->a_unfocused_unpressed_max);
     theme->a_unfocused_pressed_close =
@@ -376,6 +422,10 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
         RrAppearanceCopy(theme->a_disabled_focused_max);
     theme->a_disabled_unfocused_desk =
         RrAppearanceCopy(theme->a_disabled_unfocused_max);
+    theme->a_hover_focused_desk =
+        RrAppearanceCopy(theme->a_hover_focused_max);
+    theme->a_hover_unfocused_desk =
+        RrAppearanceCopy(theme->a_hover_unfocused_max);
     theme->a_unfocused_unpressed_desk =
         RrAppearanceCopy(theme->a_unfocused_unpressed_max);
     theme->a_unfocused_pressed_desk =
@@ -392,6 +442,10 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
         RrAppearanceCopy(theme->a_disabled_focused_max);
     theme->a_disabled_unfocused_shade =
         RrAppearanceCopy(theme->a_disabled_unfocused_max);
+    theme->a_hover_focused_shade =
+        RrAppearanceCopy(theme->a_hover_focused_max);
+    theme->a_hover_unfocused_shade =
+        RrAppearanceCopy(theme->a_hover_unfocused_max);
     theme->a_unfocused_unpressed_shade =
         RrAppearanceCopy(theme->a_unfocused_unpressed_max);
     theme->a_unfocused_pressed_shade =
@@ -408,6 +462,10 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
         RrAppearanceCopy(theme->a_disabled_focused_max);
     theme->a_disabled_unfocused_iconify =
         RrAppearanceCopy(theme->a_disabled_focused_max);
+    theme->a_hover_focused_iconify =
+        RrAppearanceCopy(theme->a_hover_focused_max);
+    theme->a_hover_unfocused_iconify =
+        RrAppearanceCopy(theme->a_hover_unfocused_max);
     theme->a_unfocused_unpressed_iconify =
         RrAppearanceCopy(theme->a_unfocused_unpressed_max);
     theme->a_unfocused_pressed_iconify =
@@ -470,6 +528,8 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
 
     theme->a_disabled_focused_max->texture[0].type = 
         theme->a_disabled_unfocused_max->texture[0].type = 
+        theme->a_hover_focused_max->texture[0].type = 
+        theme->a_hover_unfocused_max->texture[0].type = 
         theme->a_focused_unpressed_max->texture[0].type = 
         theme->a_focused_pressed_max->texture[0].type = 
         theme->a_focused_pressed_set_max->texture[0].type =  
@@ -478,12 +538,16 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
         theme->a_unfocused_pressed_set_max->texture[0].type = 
         theme->a_disabled_focused_close->texture[0].type = 
         theme->a_disabled_unfocused_close->texture[0].type = 
+        theme->a_hover_focused_close->texture[0].type = 
+        theme->a_hover_unfocused_close->texture[0].type = 
         theme->a_focused_unpressed_close->texture[0].type = 
         theme->a_focused_pressed_close->texture[0].type = 
         theme->a_unfocused_unpressed_close->texture[0].type = 
         theme->a_unfocused_pressed_close->texture[0].type = 
         theme->a_disabled_focused_desk->texture[0].type = 
         theme->a_disabled_unfocused_desk->texture[0].type = 
+        theme->a_hover_focused_desk->texture[0].type = 
+        theme->a_hover_unfocused_desk->texture[0].type = 
         theme->a_focused_unpressed_desk->texture[0].type = 
         theme->a_focused_pressed_desk->texture[0].type = 
         theme->a_focused_pressed_set_desk->texture[0].type = 
@@ -492,6 +556,8 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
         theme->a_unfocused_pressed_set_desk->texture[0].type = 
         theme->a_disabled_focused_shade->texture[0].type = 
         theme->a_disabled_unfocused_shade->texture[0].type = 
+        theme->a_hover_focused_shade->texture[0].type = 
+        theme->a_hover_unfocused_shade->texture[0].type = 
         theme->a_focused_unpressed_shade->texture[0].type = 
         theme->a_focused_pressed_shade->texture[0].type = 
         theme->a_focused_pressed_set_shade->texture[0].type = 
@@ -500,12 +566,16 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
         theme->a_unfocused_pressed_set_shade->texture[0].type = 
         theme->a_disabled_focused_iconify->texture[0].type = 
         theme->a_disabled_unfocused_iconify->texture[0].type = 
+        theme->a_hover_focused_iconify->texture[0].type = 
+        theme->a_hover_unfocused_iconify->texture[0].type = 
         theme->a_focused_unpressed_iconify->texture[0].type = 
         theme->a_focused_pressed_iconify->texture[0].type = 
         theme->a_unfocused_unpressed_iconify->texture[0].type = 
         theme->a_unfocused_pressed_iconify->texture[0].type = RR_TEXTURE_MASK;
     theme->a_disabled_focused_max->texture[0].data.mask.mask = 
         theme->a_disabled_unfocused_max->texture[0].data.mask.mask = 
+        theme->a_hover_focused_max->texture[0].data.mask.mask = 
+        theme->a_hover_unfocused_max->texture[0].data.mask.mask = 
         theme->a_focused_unpressed_max->texture[0].data.mask.mask = 
         theme->a_unfocused_unpressed_max->texture[0].data.mask.mask = 
         theme->a_focused_pressed_max->texture[0].data.mask.mask = 
@@ -516,6 +586,8 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
         theme->max_set_mask;
     theme->a_disabled_focused_close->texture[0].data.mask.mask = 
         theme->a_disabled_unfocused_close->texture[0].data.mask.mask = 
+        theme->a_hover_focused_close->texture[0].data.mask.mask = 
+        theme->a_hover_unfocused_close->texture[0].data.mask.mask = 
         theme->a_focused_pressed_close->texture[0].data.mask.mask = 
         theme->a_unfocused_pressed_close->texture[0].data.mask.mask =
         theme->a_focused_unpressed_close->texture[0].data.mask.mask = 
@@ -523,6 +595,8 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
         theme->close_mask;
     theme->a_disabled_focused_desk->texture[0].data.mask.mask = 
         theme->a_disabled_unfocused_desk->texture[0].data.mask.mask = 
+        theme->a_hover_focused_desk->texture[0].data.mask.mask = 
+        theme->a_hover_unfocused_desk->texture[0].data.mask.mask = 
         theme->a_focused_unpressed_desk->texture[0].data.mask.mask = 
         theme->a_unfocused_unpressed_desk->texture[0].data.mask.mask = 
         theme->a_focused_pressed_desk->texture[0].data.mask.mask = 
@@ -533,6 +607,8 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
         theme->desk_set_mask;
     theme->a_disabled_focused_shade->texture[0].data.mask.mask = 
         theme->a_disabled_unfocused_shade->texture[0].data.mask.mask = 
+        theme->a_hover_focused_shade->texture[0].data.mask.mask = 
+        theme->a_hover_unfocused_shade->texture[0].data.mask.mask = 
         theme->a_focused_unpressed_shade->texture[0].data.mask.mask = 
         theme->a_unfocused_unpressed_shade->texture[0].data.mask.mask = 
         theme->a_focused_pressed_shade->texture[0].data.mask.mask = 
@@ -543,6 +619,8 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
         theme->shade_set_mask;
     theme->a_disabled_focused_iconify->texture[0].data.mask.mask = 
         theme->a_disabled_unfocused_iconify->texture[0].data.mask.mask = 
+        theme->a_hover_focused_iconify->texture[0].data.mask.mask = 
+        theme->a_hover_unfocused_iconify->texture[0].data.mask.mask = 
         theme->a_focused_unpressed_iconify->texture[0].data.mask.mask = 
         theme->a_unfocused_unpressed_iconify->texture[0].data.mask.mask = 
         theme->a_focused_pressed_iconify->texture[0].data.mask.mask = 
@@ -560,34 +638,48 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
         theme->a_disabled_unfocused_shade->texture[0].data.mask.color = 
         theme->a_disabled_unfocused_iconify->texture[0].data.mask.color = 
         theme->titlebut_disabled_unfocused_color;
+    theme->a_hover_focused_max->texture[0].data.mask.color = 
+        theme->a_hover_focused_close->texture[0].data.mask.color = 
+        theme->a_hover_focused_desk->texture[0].data.mask.color = 
+        theme->a_hover_focused_shade->texture[0].data.mask.color = 
+        theme->a_hover_focused_iconify->texture[0].data.mask.color = 
+        theme->titlebut_hover_focused_color;
+    theme->a_hover_unfocused_max->texture[0].data.mask.color = 
+        theme->a_hover_unfocused_close->texture[0].data.mask.color = 
+        theme->a_hover_unfocused_desk->texture[0].data.mask.color = 
+        theme->a_hover_unfocused_shade->texture[0].data.mask.color = 
+        theme->a_hover_unfocused_iconify->texture[0].data.mask.color = 
+        theme->titlebut_hover_unfocused_color;
     theme->a_focused_unpressed_max->texture[0].data.mask.color = 
-        theme->a_focused_pressed_max->texture[0].data.mask.color = 
-        theme->a_focused_pressed_set_max->texture[0].data.mask.color = 
         theme->a_focused_unpressed_close->texture[0].data.mask.color = 
-        theme->a_focused_pressed_close->texture[0].data.mask.color = 
         theme->a_focused_unpressed_desk->texture[0].data.mask.color = 
+        theme->a_focused_unpressed_shade->texture[0].data.mask.color = 
+        theme->a_focused_unpressed_iconify->texture[0].data.mask.color = 
+        theme->titlebut_focused_unpressed_color;
+    theme->a_focused_pressed_max->texture[0].data.mask.color = 
+        theme->a_focused_pressed_set_max->texture[0].data.mask.color = 
+        theme->a_focused_pressed_close->texture[0].data.mask.color = 
         theme->a_focused_pressed_desk->texture[0].data.mask.color = 
         theme->a_focused_pressed_set_desk->texture[0].data.mask.color = 
-        theme->a_focused_unpressed_shade->texture[0].data.mask.color = 
         theme->a_focused_pressed_shade->texture[0].data.mask.color = 
         theme->a_focused_pressed_set_shade->texture[0].data.mask.color = 
-        theme->a_focused_unpressed_iconify->texture[0].data.mask.color = 
         theme->a_focused_pressed_iconify->texture[0].data.mask.color =
-        theme->titlebut_focused_color;
+        theme->titlebut_focused_pressed_color;
     theme->a_unfocused_unpressed_max->texture[0].data.mask.color = 
+        theme->a_unfocused_unpressed_close->texture[0].data.mask.color = 
+        theme->a_unfocused_unpressed_desk->texture[0].data.mask.color = 
+        theme->a_unfocused_unpressed_shade->texture[0].data.mask.color = 
+        theme->a_unfocused_unpressed_iconify->texture[0].data.mask.color = 
+        theme->titlebut_unfocused_unpressed_color;
         theme->a_unfocused_pressed_max->texture[0].data.mask.color = 
         theme->a_unfocused_pressed_set_max->texture[0].data.mask.color = 
-        theme->a_unfocused_unpressed_close->texture[0].data.mask.color = 
         theme->a_unfocused_pressed_close->texture[0].data.mask.color = 
-        theme->a_unfocused_unpressed_desk->texture[0].data.mask.color = 
         theme->a_unfocused_pressed_desk->texture[0].data.mask.color = 
         theme->a_unfocused_pressed_set_desk->texture[0].data.mask.color = 
-        theme->a_unfocused_unpressed_shade->texture[0].data.mask.color = 
         theme->a_unfocused_pressed_shade->texture[0].data.mask.color = 
         theme->a_unfocused_pressed_set_shade->texture[0].data.mask.color = 
-        theme->a_unfocused_unpressed_iconify->texture[0].data.mask.color = 
         theme->a_unfocused_pressed_iconify->texture[0].data.mask.color =
-        theme->titlebut_unfocused_color;
+        theme->titlebut_unfocused_pressed_color;
 
     XrmDestroyDatabase(db);
 
@@ -609,8 +701,14 @@ void RrThemeFree(RrTheme *theme)
         RrColorFree(theme->cb_focused_color);
         RrColorFree(theme->title_unfocused_color);
         RrColorFree(theme->title_focused_color);
-        RrColorFree(theme->titlebut_unfocused_color);
-        RrColorFree(theme->titlebut_focused_color);
+        RrColorFree(theme->titlebut_disabled_focused_color);
+        RrColorFree(theme->titlebut_disabled_unfocused_color);
+        RrColorFree(theme->titlebut_hover_focused_color);
+        RrColorFree(theme->titlebut_hover_unfocused_color);
+        RrColorFree(theme->titlebut_unfocused_pressed_color);
+        RrColorFree(theme->titlebut_focused_pressed_color);
+        RrColorFree(theme->titlebut_unfocused_unpressed_color);
+        RrColorFree(theme->titlebut_focused_unpressed_color);
         RrColorFree(theme->menu_color);
         RrColorFree(theme->menu_title_color);
         RrColorFree(theme->menu_disabled_color);
@@ -629,26 +727,44 @@ void RrThemeFree(RrTheme *theme)
         RrFontClose(theme->mtitlefont);
         RrFontClose(theme->mfont);
 
-        g_free(theme->title_layout);
-
+        RrAppearanceFree(theme->a_disabled_focused_max);
+        RrAppearanceFree(theme->a_disabled_unfocused_max);
+        RrAppearanceFree(theme->a_hover_focused_max);
+        RrAppearanceFree(theme->a_hover_unfocused_max);
         RrAppearanceFree(theme->a_focused_unpressed_max);
         RrAppearanceFree(theme->a_focused_pressed_max);
         RrAppearanceFree(theme->a_focused_pressed_set_max);
         RrAppearanceFree(theme->a_unfocused_unpressed_max);
         RrAppearanceFree(theme->a_unfocused_pressed_max);
         RrAppearanceFree(theme->a_unfocused_pressed_set_max);
+        RrAppearanceFree(theme->a_disabled_focused_close);
+        RrAppearanceFree(theme->a_disabled_unfocused_close);
+        RrAppearanceFree(theme->a_hover_focused_close);
+        RrAppearanceFree(theme->a_hover_unfocused_close);
         RrAppearanceFree(theme->a_focused_unpressed_close);
         RrAppearanceFree(theme->a_focused_pressed_close);
         RrAppearanceFree(theme->a_unfocused_unpressed_close);
         RrAppearanceFree(theme->a_unfocused_pressed_close);
+        RrAppearanceFree(theme->a_disabled_focused_desk);
+        RrAppearanceFree(theme->a_disabled_unfocused_desk);
+        RrAppearanceFree(theme->a_hover_focused_desk);
+        RrAppearanceFree(theme->a_hover_unfocused_desk);
         RrAppearanceFree(theme->a_focused_unpressed_desk);
         RrAppearanceFree(theme->a_focused_pressed_desk);
         RrAppearanceFree(theme->a_unfocused_unpressed_desk);
         RrAppearanceFree(theme->a_unfocused_pressed_desk);
+        RrAppearanceFree(theme->a_disabled_focused_shade);
+        RrAppearanceFree(theme->a_disabled_unfocused_shade);
+        RrAppearanceFree(theme->a_hover_focused_shade);
+        RrAppearanceFree(theme->a_hover_unfocused_shade);
         RrAppearanceFree(theme->a_focused_unpressed_shade);
         RrAppearanceFree(theme->a_focused_pressed_shade);
         RrAppearanceFree(theme->a_unfocused_unpressed_shade);
         RrAppearanceFree(theme->a_unfocused_pressed_shade);
+        RrAppearanceFree(theme->a_disabled_focused_iconify);
+        RrAppearanceFree(theme->a_disabled_unfocused_iconify);
+        RrAppearanceFree(theme->a_hover_focused_iconify);
+        RrAppearanceFree(theme->a_hover_unfocused_iconify);
         RrAppearanceFree(theme->a_focused_unpressed_iconify);
         RrAppearanceFree(theme->a_focused_pressed_iconify);
         RrAppearanceFree(theme->a_unfocused_unpressed_iconify);
This page took 0.030265 seconds and 4 git commands to generate.