#include "frame.h"
#include "openbox.h"
#include "screen.h"
+#include "client.h"
#include "framerender.h"
#include "render/theme.h"
-static void framerender_label(Frame *self, RrAppearance *a);
-static void framerender_icon(Frame *self, RrAppearance *a);
-static void framerender_max(Frame *self, RrAppearance *a);
-static void framerender_iconify(Frame *self, RrAppearance *a);
-static void framerender_desk(Frame *self, RrAppearance *a);
-static void framerender_shade(Frame *self, RrAppearance *a);
-static void framerender_close(Frame *self, RrAppearance *a);
+static void framerender_label(ObFrame *self, RrAppearance *a);
+static void framerender_icon(ObFrame *self, RrAppearance *a);
+static void framerender_max(ObFrame *self, RrAppearance *a);
+static void framerender_iconify(ObFrame *self, RrAppearance *a);
+static void framerender_desk(ObFrame *self, RrAppearance *a);
+static void framerender_shade(ObFrame *self, RrAppearance *a);
+static void framerender_close(ObFrame *self, RrAppearance *a);
-void framerender_frame(Frame *self)
+void framerender_frame(ObFrame *self)
{
if (self->focused)
XSetWindowBorder(ob_display, self->plate,
- ob_rr_theme->cb_focused_color->pixel);
+ RrColorPixel(ob_rr_theme->cb_focused_color));
else
XSetWindowBorder(ob_display, self->plate,
- ob_rr_theme->cb_unfocused_color->pixel);
+ RrColorPixel(ob_rr_theme->cb_unfocused_color));
- if (self->client->decorations & Decor_Titlebar) {
+ if (self->decorations & OB_FRAME_DECOR_TITLEBAR) {
RrAppearance *t, *l, *m, *n, *i, *d, *s, *c;
t = (self->focused ?
self->a_focused_title : self->a_unfocused_title);
l = (self->focused ?
self->a_focused_label : self->a_unfocused_label);
- m = (self->focused ?
- (self->client->max_vert || self->client->max_horz ?
- ob_rr_theme->a_focused_pressed_set_max :
- (self->max_press ?
- ob_rr_theme->a_focused_pressed_max :
- ob_rr_theme->a_focused_unpressed_max)) :
- (self->client->max_vert || self->client->max_horz ?
- ob_rr_theme->a_unfocused_pressed_set_max :
- (self->max_press ?
- ob_rr_theme->a_unfocused_pressed_max :
- ob_rr_theme->a_unfocused_unpressed_max)));
+ m = (!(self->decorations & OB_FRAME_DECOR_MAXIMIZE) ?
+ (self->focused ?
+ ob_rr_theme->a_disabled_focused_max :
+ ob_rr_theme->a_disabled_unfocused_max) :
+ (self->focused ?
+ (self->client->max_vert || self->client->max_horz ?
+ ob_rr_theme->a_focused_pressed_set_max :
+ (self->max_press ?
+ ob_rr_theme->a_focused_pressed_max :
+ ob_rr_theme->a_focused_unpressed_max)) :
+ (self->client->max_vert || self->client->max_horz ?
+ ob_rr_theme->a_unfocused_pressed_set_max :
+ (self->max_press ?
+ ob_rr_theme->a_unfocused_pressed_max :
+ ob_rr_theme->a_unfocused_unpressed_max))));
n = self->a_icon;
- i = (self->focused ?
- (self->iconify_press ?
- ob_rr_theme->a_focused_pressed_iconify :
- ob_rr_theme->a_focused_unpressed_iconify) :
- (self->iconify_press ?
- ob_rr_theme->a_unfocused_pressed_iconify :
- ob_rr_theme->a_unfocused_unpressed_iconify));
- d = (self->focused ?
- (self->client->desktop == DESKTOP_ALL ?
- ob_rr_theme->a_focused_pressed_set_desk :
- (self->desk_press ?
- ob_rr_theme->a_focused_pressed_desk :
- ob_rr_theme->a_focused_unpressed_desk)) :
- (self->client->desktop == DESKTOP_ALL ?
- ob_rr_theme->a_unfocused_pressed_set_desk :
- (self->desk_press ?
- ob_rr_theme->a_unfocused_pressed_desk :
- ob_rr_theme->a_unfocused_unpressed_desk)));
- s = (self->focused ?
- (self->client->shaded ?
- ob_rr_theme->a_focused_pressed_set_shade :
- (self->shade_press ?
- ob_rr_theme->a_focused_pressed_shade :
- ob_rr_theme->a_focused_unpressed_shade)) :
- (self->client->shaded ?
- ob_rr_theme->a_unfocused_pressed_set_shade :
- (self->shade_press ?
- ob_rr_theme->a_unfocused_pressed_shade :
- ob_rr_theme->a_unfocused_unpressed_shade)));
- c = (self->focused ?
- (self->close_press ?
- ob_rr_theme->a_focused_pressed_close :
- ob_rr_theme->a_focused_unpressed_close) :
- (self->close_press ?
- ob_rr_theme->a_unfocused_pressed_close :
- ob_rr_theme->a_unfocused_unpressed_close));
+ i = (!(self->decorations & OB_FRAME_DECOR_ICONIFY) ?
+ (self->focused ?
+ ob_rr_theme->a_disabled_focused_iconify :
+ ob_rr_theme->a_disabled_unfocused_iconify) :
+ (self->focused ?
+ (self->iconify_press ?
+ ob_rr_theme->a_focused_pressed_iconify :
+ ob_rr_theme->a_focused_unpressed_iconify) :
+ (self->iconify_press ?
+ ob_rr_theme->a_unfocused_pressed_iconify :
+ ob_rr_theme->a_unfocused_unpressed_iconify)));
+ d = (!(self->decorations & OB_FRAME_DECOR_ALLDESKTOPS) ?
+ (self->focused ?
+ ob_rr_theme->a_disabled_focused_desk :
+ ob_rr_theme->a_disabled_unfocused_desk) :
+ (self->focused ?
+ (self->client->desktop == DESKTOP_ALL ?
+ ob_rr_theme->a_focused_pressed_set_desk :
+ (self->desk_press ?
+ ob_rr_theme->a_focused_pressed_desk :
+ ob_rr_theme->a_focused_unpressed_desk)) :
+ (self->client->desktop == DESKTOP_ALL ?
+ ob_rr_theme->a_unfocused_pressed_set_desk :
+ (self->desk_press ?
+ ob_rr_theme->a_unfocused_pressed_desk :
+ ob_rr_theme->a_unfocused_unpressed_desk))));
+ s = (!(self->decorations & OB_FRAME_DECOR_SHADE) ?
+ (self->focused ?
+ ob_rr_theme->a_disabled_focused_shade :
+ ob_rr_theme->a_disabled_unfocused_shade) :
+ (self->focused ?
+ (self->client->shaded ?
+ ob_rr_theme->a_focused_pressed_set_shade :
+ (self->shade_press ?
+ ob_rr_theme->a_focused_pressed_shade :
+ ob_rr_theme->a_focused_unpressed_shade)) :
+ (self->client->shaded ?
+ ob_rr_theme->a_unfocused_pressed_set_shade :
+ (self->shade_press ?
+ ob_rr_theme->a_unfocused_pressed_shade :
+ ob_rr_theme->a_unfocused_unpressed_shade))));
+ c = (!(self->decorations & OB_FRAME_DECOR_CLOSE) ?
+ (self->focused ?
+ ob_rr_theme->a_disabled_focused_close :
+ ob_rr_theme->a_disabled_unfocused_close) :
+ (self->focused ?
+ (self->close_press ?
+ ob_rr_theme->a_focused_pressed_close :
+ ob_rr_theme->a_focused_unpressed_close) :
+ (self->close_press ?
+ ob_rr_theme->a_unfocused_pressed_close :
+ ob_rr_theme->a_unfocused_unpressed_close)));
RrPaint(t, self->title, self->width, ob_rr_theme->title_height);
framerender_close(self, c);
}
- if (self->client->decorations & Decor_Handle) {
+ if (self->decorations & OB_FRAME_DECOR_HANDLE) {
RrAppearance *h, *g;
h = (self->focused ?
RrPaint(h, self->handle, self->width, ob_rr_theme->handle_height);
- g = (self->focused ?
- ob_rr_theme->a_focused_grip : ob_rr_theme->a_unfocused_grip);
+ if (self->decorations & OB_FRAME_DECOR_GRIPS) {
+ g = (self->focused ?
+ ob_rr_theme->a_focused_grip : ob_rr_theme->a_unfocused_grip);
- if (g->surface.grad == RR_SURFACE_PARENTREL)
- g->surface.parent = h;
+ if (g->surface.grad == RR_SURFACE_PARENTREL)
+ g->surface.parent = h;
- g->surface.parentx = 0;
- g->surface.parenty = 0;
+ g->surface.parentx = 0;
+ g->surface.parenty = 0;
- RrPaint(g, self->lgrip,
- ob_rr_theme->grip_width, ob_rr_theme->handle_height);
+ RrPaint(g, self->lgrip,
+ ob_rr_theme->grip_width, ob_rr_theme->handle_height);
- g->surface.parentx = self->width - ob_rr_theme->grip_width;
- g->surface.parenty = 0;
+ g->surface.parentx = self->width - ob_rr_theme->grip_width;
+ g->surface.parenty = 0;
- RrPaint(g, self->rgrip,
- ob_rr_theme->grip_width, ob_rr_theme->handle_height);
+ RrPaint(g, self->rgrip,
+ ob_rr_theme->grip_width, ob_rr_theme->handle_height);
+ }
}
}
-static void framerender_label(Frame *self, RrAppearance *a)
+static void framerender_label(ObFrame *self, RrAppearance *a)
{
if (self->label_x < 0) return;
/* set the texture's text! */
RrPaint(a, self->label, self->label_width, ob_rr_theme->label_height);
}
-static void framerender_icon(Frame *self, RrAppearance *a)
+static void framerender_icon(ObFrame *self, RrAppearance *a)
{
if (self->icon_x < 0) return;
ob_rr_theme->button_size + 2, ob_rr_theme->button_size + 2);
}
-static void framerender_max(Frame *self, RrAppearance *a)
+static void framerender_max(ObFrame *self, RrAppearance *a)
{
if (self->max_x < 0) return;
RrPaint(a, self->max, ob_rr_theme->button_size, ob_rr_theme->button_size);
}
-static void framerender_iconify(Frame *self, RrAppearance *a)
+static void framerender_iconify(ObFrame *self, RrAppearance *a)
{
if (self->iconify_x < 0) return;
RrPaint(a, self->iconify,
ob_rr_theme->button_size, ob_rr_theme->button_size);
}
-static void framerender_desk(Frame *self, RrAppearance *a)
+static void framerender_desk(ObFrame *self, RrAppearance *a)
{
if (self->desk_x < 0) return;
RrPaint(a, self->desk, ob_rr_theme->button_size, ob_rr_theme->button_size);
}
-static void framerender_shade(Frame *self, RrAppearance *a)
+static void framerender_shade(ObFrame *self, RrAppearance *a)
{
if (self->shade_x < 0) return;
RrPaint(a, self->shade,
ob_rr_theme->button_size, ob_rr_theme->button_size);
}
-static void framerender_close(Frame *self, RrAppearance *a)
+static void framerender_close(ObFrame *self, RrAppearance *a)
{
if (self->close_x < 0) return;
RrPaint(a, self->close,