]> Dogcows Code - chaz/openbox/blobdiff - openbox/framerender.c
further work to r6205. make the disabled titlebar buttons hide if they won't move...
[chaz/openbox] / openbox / framerender.c
index 2286430b4c633e92693bda8d3f8fd225f964a3a5..214743807d7aae1a023a8308cb50e9e51ea02595 100644 (file)
@@ -2,7 +2,7 @@
 
    framerender.c for the Openbox window manager
    Copyright (c) 2006        Mikael Magnusson
-   Copyright (c) 2003        Ben Jansens
+   Copyright (c) 2003-2007   Dana Jansens
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -40,104 +40,128 @@ void framerender_frame(ObFrame *self)
         px = (self->focused ?
               RrColorPixel(ob_rr_theme->cb_focused_color) :
               RrColorPixel(ob_rr_theme->cb_unfocused_color));
-        XSetWindowBackground(ob_display, self->plate, px);
-        XClearWindow(ob_display, self->plate);
+        XSetWindowBackground(ob_display, self->inner, px);
+        XClearWindow(ob_display, self->inner);
     }
 
     if (self->decorations & OB_FRAME_DECOR_TITLEBAR) {
         RrAppearance *t, *l, *m, *n, *i, *d, *s, *c;
         if (self->focused) {
 
-          t = self->a_focused_title;
-          l = self->a_focused_label;
-          m = (!(self->decorations & OB_FRAME_DECOR_MAXIMIZE) ?
-              ob_rr_theme->a_disabled_focused_max :
-              (self->client->max_vert || self->client->max_horz ?
-               ob_rr_theme->a_toggled_focused_max :
-               (self->max_press ?
-                ob_rr_theme->a_focused_pressed_max :
-                (self->max_hover ?
-                 ob_rr_theme->a_hover_focused_max : 
-                 ob_rr_theme->a_focused_unpressed_max))));
-          n = self->a_icon;
-          i = (!(self->decorations & OB_FRAME_DECOR_ICONIFY) ?
-              ob_rr_theme->a_disabled_focused_iconify :
-              (self->iconify_press ?
-               ob_rr_theme->a_focused_pressed_iconify :
-               (self->iconify_hover ?
-                ob_rr_theme->a_hover_focused_iconify : 
-                ob_rr_theme->a_focused_unpressed_iconify)));
-          d = (!(self->decorations & OB_FRAME_DECOR_ALLDESKTOPS) ?
-              ob_rr_theme->a_disabled_focused_desk :
-              (self->client->desktop == DESKTOP_ALL ?
-               ob_rr_theme->a_toggled_focused_desk :
-               (self->desk_press ?
-                ob_rr_theme->a_focused_pressed_desk :
-                (self->desk_hover ?
-                 ob_rr_theme->a_hover_focused_desk : 
-                 ob_rr_theme->a_focused_unpressed_desk))));
-          s = (!(self->decorations & OB_FRAME_DECOR_SHADE) ?
-              ob_rr_theme->a_disabled_focused_shade :
-              (self->client->shaded ?
-               ob_rr_theme->a_toggled_focused_shade :
-               (self->shade_press ?
-                ob_rr_theme->a_focused_pressed_shade :
-                (self->shade_hover ?
-                 ob_rr_theme->a_hover_focused_shade : 
-                 ob_rr_theme->a_focused_unpressed_shade))));
-          c = (!(self->decorations & OB_FRAME_DECOR_CLOSE) ?
-              ob_rr_theme->a_disabled_focused_close :
-              (self->close_press ?
-               ob_rr_theme->a_focused_pressed_close :
-               (self->close_hover ?
-                ob_rr_theme->a_hover_focused_close : 
-                ob_rr_theme->a_focused_unpressed_close)));
+            t = self->a_focused_title;
+            l = self->a_focused_label;
+
+            m = (!(self->decorations & OB_FRAME_DECOR_MAXIMIZE) ?
+                 ob_rr_theme->a_disabled_focused_max :
+                 (self->client->max_vert || self->client->max_horz ?
+                  (self->max_press ?
+                   ob_rr_theme->a_toggled_focused_pressed_max :
+                   (self->max_hover ?
+                    ob_rr_theme->a_toggled_hover_focused_max : 
+                    ob_rr_theme->a_toggled_focused_unpressed_max)) :
+                  (self->max_press ?
+                   ob_rr_theme->a_focused_pressed_max :
+                   (self->max_hover ?
+                    ob_rr_theme->a_hover_focused_max : 
+                    ob_rr_theme->a_focused_unpressed_max))));
+            n = self->a_icon;
+            i = (!(self->decorations & OB_FRAME_DECOR_ICONIFY) ?
+                 ob_rr_theme->a_disabled_focused_iconify :
+                 (self->iconify_press ?
+                  ob_rr_theme->a_focused_pressed_iconify :
+                  (self->iconify_hover ?
+                   ob_rr_theme->a_hover_focused_iconify : 
+                   ob_rr_theme->a_focused_unpressed_iconify)));
+            d = (!(self->decorations & OB_FRAME_DECOR_ALLDESKTOPS) ?
+                 ob_rr_theme->a_disabled_focused_desk :
+                 (self->client->desktop == DESKTOP_ALL ?
+                  (self->desk_press ?
+                   ob_rr_theme->a_toggled_focused_pressed_desk :
+                   (self->desk_hover ?
+                    ob_rr_theme->a_toggled_hover_focused_desk : 
+                    ob_rr_theme->a_toggled_focused_unpressed_desk)) :
+                  (self->desk_press ?
+                   ob_rr_theme->a_focused_pressed_desk :
+                   (self->desk_hover ?
+                    ob_rr_theme->a_hover_focused_desk : 
+                    ob_rr_theme->a_focused_unpressed_desk))));
+            s = (!(self->decorations & OB_FRAME_DECOR_SHADE) ?
+                 ob_rr_theme->a_disabled_focused_shade :
+                 (self->client->shaded ?
+                  (self->shade_press ?
+                   ob_rr_theme->a_toggled_focused_pressed_shade :
+                   (self->shade_hover ?
+                    ob_rr_theme->a_toggled_hover_focused_shade : 
+                    ob_rr_theme->a_toggled_focused_unpressed_shade)) :
+                  (self->shade_press ?
+                   ob_rr_theme->a_focused_pressed_shade :
+                   (self->shade_hover ?
+                    ob_rr_theme->a_hover_focused_shade : 
+                    ob_rr_theme->a_focused_unpressed_shade))));
+            c = (!(self->decorations & OB_FRAME_DECOR_CLOSE) ?
+                 ob_rr_theme->a_disabled_focused_close :
+                 (self->close_press ?
+                  ob_rr_theme->a_focused_pressed_close :
+                  (self->close_hover ?
+                   ob_rr_theme->a_hover_focused_close : 
+                   ob_rr_theme->a_focused_unpressed_close)));
         } else {
-
-          t = self->a_unfocused_title;
-          l = self->a_unfocused_label;
-          m = (!(self->decorations & OB_FRAME_DECOR_MAXIMIZE) ?
-              ob_rr_theme->a_disabled_unfocused_max :
-              (self->client->max_vert || self->client->max_horz ?
-               ob_rr_theme->a_toggled_unfocused_max :
-               (self->max_press ?
-                ob_rr_theme->a_unfocused_pressed_max :
-                (self->max_hover ?
-                 ob_rr_theme->a_hover_unfocused_max : 
-                 ob_rr_theme->a_unfocused_unpressed_max))));
-          n = self->a_icon;
-          i = (!(self->decorations & OB_FRAME_DECOR_ICONIFY) ?
-              ob_rr_theme->a_disabled_unfocused_iconify :
-              (self->iconify_press ?
-               ob_rr_theme->a_unfocused_pressed_iconify :
-               (self->iconify_hover ?
-                ob_rr_theme->a_hover_unfocused_iconify : 
-                ob_rr_theme->a_unfocused_unpressed_iconify)));
-          d = (!(self->decorations & OB_FRAME_DECOR_ALLDESKTOPS) ?
-              ob_rr_theme->a_disabled_unfocused_desk :
-              (self->client->desktop == DESKTOP_ALL ?
-               ob_rr_theme->a_toggled_unfocused_desk :
-               (self->desk_press ?
-                ob_rr_theme->a_unfocused_pressed_desk :
-                (self->desk_hover ?
-                 ob_rr_theme->a_hover_unfocused_desk : 
-                 ob_rr_theme->a_unfocused_unpressed_desk))));
-          s = (!(self->decorations & OB_FRAME_DECOR_SHADE) ?
-              ob_rr_theme->a_disabled_unfocused_shade :
-              (self->client->shaded ?
-               ob_rr_theme->a_toggled_unfocused_shade :
-               (self->shade_press ?
-                ob_rr_theme->a_unfocused_pressed_shade :
-                (self->shade_hover ?
-                 ob_rr_theme->a_hover_unfocused_shade : 
-                 ob_rr_theme->a_unfocused_unpressed_shade))));
-          c = (!(self->decorations & OB_FRAME_DECOR_CLOSE) ?
-              ob_rr_theme->a_disabled_unfocused_close :
-              (self->close_press ?
-               ob_rr_theme->a_unfocused_pressed_close :
-               (self->close_hover ?
-                ob_rr_theme->a_hover_unfocused_close : 
-                ob_rr_theme->a_unfocused_unpressed_close)));
+            t = self->a_unfocused_title;
+            l = self->a_unfocused_label;
+            m = (!(self->decorations & OB_FRAME_DECOR_MAXIMIZE) ?
+                 ob_rr_theme->a_disabled_unfocused_max :
+                 (self->client->max_vert || self->client->max_horz ?
+                  (self->max_press ?
+                   ob_rr_theme->a_toggled_unfocused_pressed_max :
+                   (self->max_hover ?
+                    ob_rr_theme->a_toggled_hover_unfocused_max : 
+                    ob_rr_theme->a_toggled_unfocused_unpressed_max)) :
+                  (self->max_press ?
+                   ob_rr_theme->a_unfocused_pressed_max :
+                   (self->max_hover ?
+                    ob_rr_theme->a_hover_unfocused_max : 
+                    ob_rr_theme->a_unfocused_unpressed_max))));
+            n = self->a_icon;
+            i = (!(self->decorations & OB_FRAME_DECOR_ICONIFY) ?
+                 ob_rr_theme->a_disabled_unfocused_iconify :
+                 (self->iconify_press ?
+                  ob_rr_theme->a_unfocused_pressed_iconify :
+                  (self->iconify_hover ?
+                   ob_rr_theme->a_hover_unfocused_iconify : 
+                   ob_rr_theme->a_unfocused_unpressed_iconify)));
+            d = (!(self->decorations & OB_FRAME_DECOR_ALLDESKTOPS) ?
+                 ob_rr_theme->a_disabled_unfocused_desk :
+                 (self->client->desktop == DESKTOP_ALL ?
+                  (self->desk_press ?
+                   ob_rr_theme->a_toggled_unfocused_pressed_desk :
+                   (self->desk_hover ?
+                    ob_rr_theme->a_toggled_hover_unfocused_desk : 
+                    ob_rr_theme->a_toggled_unfocused_unpressed_desk)) :
+                  (self->desk_press ?
+                   ob_rr_theme->a_unfocused_pressed_desk :
+                   (self->desk_hover ?
+                    ob_rr_theme->a_hover_unfocused_desk : 
+                    ob_rr_theme->a_unfocused_unpressed_desk))));
+            s = (!(self->decorations & OB_FRAME_DECOR_SHADE) ?
+                 ob_rr_theme->a_disabled_unfocused_shade :
+                 (self->client->shaded ?
+                  (self->shade_press ?
+                   ob_rr_theme->a_toggled_unfocused_pressed_shade :
+                   (self->shade_hover ?
+                    ob_rr_theme->a_toggled_hover_unfocused_shade : 
+                    ob_rr_theme->a_toggled_unfocused_unpressed_shade)) :
+                  (self->shade_press ?
+                   ob_rr_theme->a_unfocused_pressed_shade :
+                   (self->shade_hover ?
+                    ob_rr_theme->a_hover_unfocused_shade : 
+                    ob_rr_theme->a_unfocused_unpressed_shade))));
+            c = (!(self->decorations & OB_FRAME_DECOR_CLOSE) ?
+                 ob_rr_theme->a_disabled_unfocused_close :
+                 (self->close_press ?
+                  ob_rr_theme->a_unfocused_pressed_close :
+                  (self->close_hover ?
+                   ob_rr_theme->a_hover_unfocused_close : 
+                   ob_rr_theme->a_unfocused_unpressed_close)));
         }
 
         RrPaint(t, self->title, self->width, ob_rr_theme->title_height);
@@ -241,7 +265,7 @@ void framerender_frame(ObFrame *self)
 
 static void framerender_label(ObFrame *self, RrAppearance *a)
 {
-    if (self->label_x < 0) return;
+    if (!self->label_on) return;
     /* set the texture's text! */
     a->texture[0].data.text.string = self->client->title;
     RrPaint(a, self->label, self->label_width, ob_rr_theme->label_height);
@@ -251,7 +275,7 @@ static void framerender_icon(ObFrame *self, RrAppearance *a)
 {
     const ObClientIcon *icon;
 
-    if (self->icon_x < 0) return;
+    if (!self->icon_on) return;
 
     icon = client_icon(self->client,
                        ob_rr_theme->button_size + 2,
@@ -270,33 +294,33 @@ static void framerender_icon(ObFrame *self, RrAppearance *a)
 
 static void framerender_max(ObFrame *self, RrAppearance *a)
 {
-    if (self->max_x < 0) return;
+    if (!self->max_on) return;
     RrPaint(a, self->max, ob_rr_theme->button_size, ob_rr_theme->button_size);
 }
 
 static void framerender_iconify(ObFrame *self, RrAppearance *a)
 {
-    if (self->iconify_x < 0) return;
+    if (!self->iconify_on) return;
     RrPaint(a, self->iconify,
             ob_rr_theme->button_size, ob_rr_theme->button_size);
 }
 
 static void framerender_desk(ObFrame *self, RrAppearance *a)
 {
-    if (self->desk_x < 0) return;
+    if (!self->desk_on) return;
     RrPaint(a, self->desk, ob_rr_theme->button_size, ob_rr_theme->button_size);
 }
 
 static void framerender_shade(ObFrame *self, RrAppearance *a)
 {
-    if (self->shade_x < 0) return;
+    if (!self->shade_on) return;
     RrPaint(a, self->shade,
             ob_rr_theme->button_size, ob_rr_theme->button_size);
 }
 
 static void framerender_close(ObFrame *self, RrAppearance *a)
 {
-    if (self->close_x < 0) return;
+    if (!self->close_on) return;
     RrPaint(a, self->close,
             ob_rr_theme->button_size, ob_rr_theme->button_size);
 }
This page took 0.026644 seconds and 4 git commands to generate.