]> Dogcows Code - chaz/openbox/blobdiff - openbox/framerender.c
animate presses on toggled titlebar buttons
[chaz/openbox] / openbox / framerender.c
index 464e1c6bb71f2440e2df6617f781710eb85ba26d..303fe8aede69b0d2a9ac24b51202fe489b707a18 100644 (file)
@@ -51,93 +51,93 @@ void framerender_frame(ObFrame *self)
           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 :
+               ob_rr_theme->a_disabled_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))));
+                (self->client->max_vert || self->client->max_horz ?
+                 ob_rr_theme->a_toggled_focused_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)));
+               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 :
+               ob_rr_theme->a_disabled_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))));
+                (self->client->desktop == DESKTOP_ALL ?
+                 ob_rr_theme->a_toggled_focused_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 :
+               ob_rr_theme->a_disabled_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))));
+                (self->client->shaded ?
+                 ob_rr_theme->a_toggled_focused_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)));
+               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))));
+            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->max_press ?
+                  ob_rr_theme->a_unfocused_pressed_max :
+                  (self->client->max_vert || self->client->max_horz ?
+                   ob_rr_theme->a_toggled_unfocused_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->desk_press ?
+                  ob_rr_theme->a_unfocused_pressed_desk :
+                  (self->client->desktop == DESKTOP_ALL ?
+                   ob_rr_theme->a_toggled_unfocused_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))));
+                (self->client->shaded ?
+                 ob_rr_theme->a_toggled_unfocused_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)));
+               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);
@@ -146,44 +146,55 @@ void framerender_frame(ObFrame *self)
         ob_rr_theme->a_clear->surface.parentx = 0;
         ob_rr_theme->a_clear->surface.parenty = 0;
 
-        RrPaint(ob_rr_theme->a_clear, self->tlresize,
-                ob_rr_theme->grip_width, ob_rr_theme->handle_height);
+        if (ob_rr_theme->grip_width > 0)
+            RrPaint(ob_rr_theme->a_clear, self->tltresize,
+                    ob_rr_theme->grip_width, ob_rr_theme->paddingy + 1);
+        if (ob_rr_theme->title_height > 0)
+            RrPaint(ob_rr_theme->a_clear, self->tllresize,
+                    ob_rr_theme->paddingx + 1, ob_rr_theme->title_height);
 
         ob_rr_theme->a_clear->surface.parentx =
             self->width - ob_rr_theme->grip_width;
 
-        RrPaint(ob_rr_theme->a_clear, self->trresize,
-                ob_rr_theme->grip_width, ob_rr_theme->handle_height);
+        if (ob_rr_theme->grip_width > 0)
+            RrPaint(ob_rr_theme->a_clear, self->trtresize,
+                    ob_rr_theme->grip_width, ob_rr_theme->paddingy + 1);
+
+        ob_rr_theme->a_clear->surface.parentx =
+            self->width - (ob_rr_theme->paddingx + 1);
 
+        if (ob_rr_theme->title_height > 0)
+            RrPaint(ob_rr_theme->a_clear, self->trrresize,
+                    ob_rr_theme->paddingx + 1, ob_rr_theme->title_height);
 
         /* set parents for any parent relative guys */
         l->surface.parent = t;
         l->surface.parentx = self->label_x;
-        l->surface.parenty = ob_rr_theme->padding;
+        l->surface.parenty = ob_rr_theme->paddingy;
 
         m->surface.parent = t;
         m->surface.parentx = self->max_x;
-        m->surface.parenty = ob_rr_theme->padding + 1;
+        m->surface.parenty = ob_rr_theme->paddingy + 1;
 
         n->surface.parent = t;
         n->surface.parentx = self->icon_x;
-        n->surface.parenty = ob_rr_theme->padding;
+        n->surface.parenty = ob_rr_theme->paddingy;
 
         i->surface.parent = t;
         i->surface.parentx = self->iconify_x;
-        i->surface.parenty = ob_rr_theme->padding + 1;
+        i->surface.parenty = ob_rr_theme->paddingy + 1;
 
         d->surface.parent = t;
         d->surface.parentx = self->desk_x;
-        d->surface.parenty = ob_rr_theme->padding + 1;
+        d->surface.parenty = ob_rr_theme->paddingy + 1;
 
         s->surface.parent = t;
         s->surface.parentx = self->shade_x;
-        s->surface.parenty = ob_rr_theme->padding + 1;
+        s->surface.parenty = ob_rr_theme->paddingy + 1;
 
         c->surface.parent = t;
         c->surface.parentx = self->close_x;
-        c->surface.parenty = ob_rr_theme->padding + 1;
+        c->surface.parenty = ob_rr_theme->paddingy + 1;
 
         framerender_label(self, l);
         framerender_max(self, m);
@@ -194,7 +205,9 @@ void framerender_frame(ObFrame *self)
         framerender_close(self, c);
     }
 
-    if (self->decorations & OB_FRAME_DECOR_HANDLE) {
+    if (self->decorations & OB_FRAME_DECOR_HANDLE &&
+        ob_rr_theme->handle_height > 0)
+    {
         RrAppearance *h, *g;
 
         h = (self->focused ?
This page took 0.032427 seconds and 4 git commands to generate.