]> Dogcows Code - chaz/openbox/blobdiff - render/theme.c
I had a commit message but my commit got stepped on so fuck it.
[chaz/openbox] / render / theme.c
index e41860ede65a1d7b0db3e1b8c96b517ef6abcb94..4fc3d6a1b758b7820e384ceeebd76956c46147eb 100644 (file)
@@ -31,44 +31,14 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
 
     theme->inst = inst;
 
-    theme->b_color = theme->cb_unfocused_color = theme->cb_focused_color = 
-        theme->title_unfocused_color = theme->title_focused_color = 
-        theme->titlebut_unfocused_color = theme->titlebut_focused_color = 
-        theme->menu_color = theme->menu_title_color =
-        theme->menu_disabled_color = theme->menu_hilite_color = NULL;
-    theme->winfont = theme->mtitlefont = theme->mfont = NULL;
-    theme->title_layout = NULL;
-    theme->max_set_mask = theme->max_unset_mask = NULL;
-    theme->desk_set_mask = theme->desk_unset_mask = NULL;
-    theme->shade_set_mask = theme->shade_unset_mask = NULL;
-    theme->iconify_mask = theme->close_mask = NULL;
-
+    theme->a_disabled_focused_max = RrAppearanceNew(inst, 1);
+    theme->a_disabled_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);
     theme->a_unfocused_unpressed_max = RrAppearanceNew(inst, 1);
     theme->a_unfocused_pressed_max = RrAppearanceNew(inst, 1);
     theme->a_unfocused_pressed_set_max = RrAppearanceNew(inst, 1);
-    theme->a_focused_unpressed_close = NULL;
-    theme->a_focused_pressed_close = NULL;
-    theme->a_unfocused_unpressed_close = NULL;
-    theme->a_unfocused_pressed_close = NULL;
-    theme->a_focused_unpressed_desk = NULL;
-    theme->a_focused_pressed_desk = NULL;
-    theme->a_focused_pressed_set_desk = NULL;
-    theme->a_unfocused_unpressed_desk = NULL;
-    theme->a_unfocused_pressed_desk = NULL;
-    theme->a_unfocused_pressed_set_desk = NULL;
-    theme->a_focused_unpressed_shade = NULL;
-    theme->a_focused_pressed_shade = NULL;
-    theme->a_focused_pressed_set_shade = NULL;
-    theme->a_unfocused_unpressed_shade = NULL;
-    theme->a_unfocused_pressed_shade = NULL;
-    theme->a_unfocused_pressed_set_shade = NULL;
-    theme->a_focused_unpressed_iconify = NULL;
-    theme->a_focused_pressed_iconify = NULL;
-    theme->a_unfocused_unpressed_iconify = NULL;
-    theme->a_unfocused_pressed_iconify = NULL;
     theme->a_focused_grip = RrAppearanceNew(inst, 0);
     theme->a_unfocused_grip = RrAppearanceNew(inst, 0);
     theme->a_focused_title = RrAppearanceNew(inst, 0);
@@ -93,8 +63,9 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
     if (name) {
        db = loaddb(theme, name);
         if (db == NULL) {
-           g_warning("Failed to load the theme '%s'", name);
-           g_message("Falling back to the default: '%s'", DEFAULT_THEME);
+           g_warning("Failed to load the theme '%s'\n"
+                      "Falling back to the default: '%s'",
+                      name, DEFAULT_THEME);
        } else
             theme->name = g_path_get_basename(name);
     }
@@ -165,6 +136,9 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
     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)
+        theme->handle_height = 0;
     if (!read_int(db, "handleWidth", &theme->handle_height) ||
        theme->handle_height < 0 || theme->handle_height > 100)
         theme->handle_height = 6;
@@ -202,6 +176,15 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
                     "window.button.unfocus.picColor",
                     &theme->titlebut_unfocused_color))
        theme->titlebut_unfocused_color = RrColorNew(inst, 0xff, 0xff, 0xff);
+    if (!read_color(db, inst,
+                    "window.button.disabled.focus.picColor",
+                    &theme->titlebut_disabled_focused_color))
+       theme->titlebut_disabled_focused_color =
+            RrColorNew(inst, 0xff, 0xff, 0xff);
+    if (!read_color(db, inst,
+                    "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,
                     "menu.title.textColor", &theme->menu_title_color))
         theme->menu_title_color = RrColorNew(inst, 0, 0, 0);
@@ -322,6 +305,14 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
         set_default_appearance(theme->app_unhilite_label);
 
     /* read buttons textures */
+    if (!read_appearance(db, inst,
+                         "window.button.disabled.focus",
+                        theme->a_disabled_focused_max))
+        set_default_appearance(theme->a_disabled_focused_max);
+    if (!read_appearance(db, inst,
+                         "window.button.disabled.unfocus",
+                        theme->a_disabled_unfocused_max))
+        set_default_appearance(theme->a_disabled_unfocused_max);
     if (!read_appearance(db, inst,
                          "window.button.pressed.focus",
                         theme->a_focused_pressed_max))
@@ -345,6 +336,10 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
                         theme->a_unfocused_unpressed_max))
        set_default_appearance(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_unfocused_unpressed_close =
         RrAppearanceCopy(theme->a_unfocused_unpressed_max);
     theme->a_unfocused_pressed_close =
@@ -353,6 +348,10 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
         RrAppearanceCopy(theme->a_focused_unpressed_max);
     theme->a_focused_pressed_close =
         RrAppearanceCopy(theme->a_focused_pressed_max);
+    theme->a_disabled_focused_desk =
+        RrAppearanceCopy(theme->a_disabled_focused_max);
+    theme->a_disabled_unfocused_desk =
+        RrAppearanceCopy(theme->a_disabled_unfocused_max);
     theme->a_unfocused_unpressed_desk =
         RrAppearanceCopy(theme->a_unfocused_unpressed_max);
     theme->a_unfocused_pressed_desk =
@@ -365,6 +364,10 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
         RrAppearanceCopy(theme->a_focused_pressed_max);
     theme->a_focused_pressed_set_desk =
         RrAppearanceCopy(theme->a_focused_pressed_max);
+    theme->a_disabled_focused_shade =
+        RrAppearanceCopy(theme->a_disabled_focused_max);
+    theme->a_disabled_unfocused_shade =
+        RrAppearanceCopy(theme->a_disabled_unfocused_max);
     theme->a_unfocused_unpressed_shade =
         RrAppearanceCopy(theme->a_unfocused_unpressed_max);
     theme->a_unfocused_pressed_shade =
@@ -377,6 +380,10 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
         RrAppearanceCopy(theme->a_focused_pressed_max);
     theme->a_focused_pressed_set_shade =
         RrAppearanceCopy(theme->a_focused_pressed_max);
+    theme->a_disabled_focused_iconify =
+        RrAppearanceCopy(theme->a_disabled_focused_max);
+    theme->a_disabled_unfocused_iconify =
+        RrAppearanceCopy(theme->a_disabled_focused_max);
     theme->a_unfocused_unpressed_iconify =
         RrAppearanceCopy(theme->a_unfocused_unpressed_max);
     theme->a_unfocused_pressed_iconify =
@@ -437,33 +444,45 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
     theme->a_menu_hilite->texture[0].data.text.color =
         theme->menu_hilite_color;
 
-    theme->a_focused_unpressed_max->texture[0].type = 
+    theme->a_disabled_focused_max->texture[0].type = 
+        theme->a_disabled_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 =  
         theme->a_unfocused_unpressed_max->texture[0].type = 
         theme->a_unfocused_pressed_max->texture[0].type = 
         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_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_focused_unpressed_desk->texture[0].type = 
         theme->a_focused_pressed_desk->texture[0].type = 
         theme->a_focused_pressed_set_desk->texture[0].type = 
         theme->a_unfocused_unpressed_desk->texture[0].type = 
         theme->a_unfocused_pressed_desk->texture[0].type = 
         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_focused_unpressed_shade->texture[0].type = 
         theme->a_focused_pressed_shade->texture[0].type = 
         theme->a_focused_pressed_set_shade->texture[0].type = 
         theme->a_unfocused_unpressed_shade->texture[0].type = 
         theme->a_unfocused_pressed_shade->texture[0].type = 
         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_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_focused_unpressed_max->texture[0].data.mask.mask = 
+    theme->a_disabled_focused_max->texture[0].data.mask.mask = 
+        theme->a_disabled_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 = 
         theme->a_unfocused_pressed_max->texture[0].data.mask.mask =
@@ -471,12 +490,16 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
     theme->a_focused_pressed_set_max->texture[0].data.mask.mask = 
         theme->a_unfocused_pressed_set_max->texture[0].data.mask.mask =
         theme->max_set_mask;
-    theme->a_focused_pressed_close->texture[0].data.mask.mask = 
+    theme->a_disabled_focused_close->texture[0].data.mask.mask = 
+        theme->a_disabled_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 = 
         theme->a_unfocused_unpressed_close->texture[0].data.mask.mask =
         theme->close_mask;
-    theme->a_focused_unpressed_desk->texture[0].data.mask.mask = 
+    theme->a_disabled_focused_desk->texture[0].data.mask.mask = 
+        theme->a_disabled_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 = 
         theme->a_unfocused_pressed_desk->texture[0].data.mask.mask =
@@ -484,7 +507,9 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
     theme->a_focused_pressed_set_desk->texture[0].data.mask.mask = 
         theme->a_unfocused_pressed_set_desk->texture[0].data.mask.mask =
         theme->desk_set_mask;
-    theme->a_focused_unpressed_shade->texture[0].data.mask.mask = 
+    theme->a_disabled_focused_shade->texture[0].data.mask.mask = 
+        theme->a_disabled_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 = 
         theme->a_unfocused_pressed_shade->texture[0].data.mask.mask =
@@ -492,11 +517,25 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name)
     theme->a_focused_pressed_set_shade->texture[0].data.mask.mask = 
         theme->a_unfocused_pressed_set_shade->texture[0].data.mask.mask =
         theme->shade_set_mask;
-    theme->a_focused_unpressed_iconify->texture[0].data.mask.mask = 
+    theme->a_disabled_focused_iconify->texture[0].data.mask.mask = 
+        theme->a_disabled_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 = 
         theme->a_unfocused_pressed_iconify->texture[0].data.mask.mask =
         theme->iconify_mask;
+    theme->a_disabled_focused_max->texture[0].data.mask.color = 
+        theme->a_disabled_focused_close->texture[0].data.mask.color = 
+        theme->a_disabled_focused_desk->texture[0].data.mask.color = 
+        theme->a_disabled_focused_shade->texture[0].data.mask.color = 
+        theme->a_disabled_focused_iconify->texture[0].data.mask.color = 
+        theme->titlebut_disabled_focused_color;
+    theme->a_disabled_unfocused_max->texture[0].data.mask.color = 
+        theme->a_disabled_unfocused_close->texture[0].data.mask.color = 
+        theme->a_disabled_unfocused_desk->texture[0].data.mask.color = 
+        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_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 = 
This page took 0.026359 seconds and 4 git commands to generate.