a_unfocused_title = appearance_new(Surface_Planar, 0);
a_focused_label = appearance_new(Surface_Planar, 1);
a_unfocused_label = appearance_new(Surface_Planar, 1);
- a_icon = appearance_new(Surface_Planar, 0);/*1);*/
+ a_icon = appearance_new(Surface_Planar, 1);
a_focused_handle = appearance_new(Surface_Planar, 0);
a_unfocused_handle = appearance_new(Surface_Planar, 0);
RECT_SET_SIZE(self->frame.area,
self->frame.client->area.width +
self->frame.size.left + self->frame.size.right,
- (self->frame.client->shaded ? TITLE_HEIGHT :
+ (self->frame.client->shaded ? TITLE_HEIGHT + self->bwidth*2:
self->frame.client->area.height +
self->frame.size.top + self->frame.size.bottom));
frame_adjust_area(self, TRUE, TRUE);
/* set all the windows for the frame in the client_map */
- g_hash_table_insert(client_map, (gpointer)self->frame.window, client);
- g_hash_table_insert(client_map, (gpointer)self->frame.plate, client);
- g_hash_table_insert(client_map, (gpointer)self->title, client);
- g_hash_table_insert(client_map, (gpointer)self->label, client);
- g_hash_table_insert(client_map, (gpointer)self->max, client);
- g_hash_table_insert(client_map, (gpointer)self->close, client);
- g_hash_table_insert(client_map, (gpointer)self->desk, client);
- g_hash_table_insert(client_map, (gpointer)self->icon, client);
- g_hash_table_insert(client_map, (gpointer)self->iconify, client);
- g_hash_table_insert(client_map, (gpointer)self->handle, client);
- g_hash_table_insert(client_map, (gpointer)self->lgrip, client);
- g_hash_table_insert(client_map, (gpointer)self->rgrip, client);
+ g_hash_table_insert(client_map, &self->frame.window, client);
+ g_hash_table_insert(client_map, &self->frame.plate, client);
+ g_hash_table_insert(client_map, &self->title, client);
+ g_hash_table_insert(client_map, &self->label, client);
+ g_hash_table_insert(client_map, &self->max, client);
+ g_hash_table_insert(client_map, &self->close, client);
+ g_hash_table_insert(client_map, &self->desk, client);
+ g_hash_table_insert(client_map, &self->icon, client);
+ g_hash_table_insert(client_map, &self->iconify, client);
+ g_hash_table_insert(client_map, &self->handle, client);
+ g_hash_table_insert(client_map, &self->lgrip, client);
+ g_hash_table_insert(client_map, &self->rgrip, client);
}
void frame_release_client(ObFrame *self, Client *client)
}
/* remove all the windows for the frame from the client_map */
- g_hash_table_remove(client_map, (gpointer)self->frame.window);
- g_hash_table_remove(client_map, (gpointer)self->frame.plate);
- g_hash_table_remove(client_map, (gpointer)self->title);
- g_hash_table_remove(client_map, (gpointer)self->label);
- g_hash_table_remove(client_map, (gpointer)self->max);
- g_hash_table_remove(client_map, (gpointer)self->close);
- g_hash_table_remove(client_map, (gpointer)self->desk);
- g_hash_table_remove(client_map, (gpointer)self->icon);
- g_hash_table_remove(client_map, (gpointer)self->iconify);
- g_hash_table_remove(client_map, (gpointer)self->handle);
- g_hash_table_remove(client_map, (gpointer)self->lgrip);
- g_hash_table_remove(client_map, (gpointer)self->rgrip);
+ g_hash_table_remove(client_map, &self->frame.window);
+ g_hash_table_remove(client_map, &self->frame.plate);
+ g_hash_table_remove(client_map, &self->title);
+ g_hash_table_remove(client_map, &self->label);
+ g_hash_table_remove(client_map, &self->max);
+ g_hash_table_remove(client_map, &self->close);
+ g_hash_table_remove(client_map, &self->desk);
+ g_hash_table_remove(client_map, &self->icon);
+ g_hash_table_remove(client_map, &self->iconify);
+ g_hash_table_remove(client_map, &self->handle);
+ g_hash_table_remove(client_map, &self->lgrip);
+ g_hash_table_remove(client_map, &self->rgrip);
frame_free(self);
}
/* set the texture's text! */
a->texture[0].data.text.string = self->frame.client->title;
+ RECT_SET(a->texture[0].position, 0, 0, self->label_width, LABEL_HEIGHT);
paint(self->label, a, 0, 0, self->label_width, LABEL_HEIGHT);
}
{
if (self->icon_x < 0) return;
- /* XXX set the texture's icon picture! */
+ if (self->frame.client->nicons) {
+ Icon *icon = client_icon(self->frame.client, BUTTON_SIZE, BUTTON_SIZE);
+ self->a_icon->texture[0].type = RGBA;
+ self->a_icon->texture[0].data.rgba.width = icon->width;
+ self->a_icon->texture[0].data.rgba.height = icon->height;
+ self->a_icon->texture[0].data.rgba.data = icon->data;
+ RECT_SET(self->a_icon->texture[0].position, 0, 0,
+ BUTTON_SIZE,BUTTON_SIZE);
+ } else
+ self->a_icon->texture[0].type = NoTexture;
+
paint(self->icon, self->a_icon, 0, 0, BUTTON_SIZE, BUTTON_SIZE);
}
static void render_max(ObFrame *self)
{
+ Appearance *a;
+
gboolean press = self->max_press ||
self->frame.client->max_vert || self->frame.client->max_horz;
if (self->max_x < 0) return;
- paint(self->max, (client_focused(self->frame.client) ?
- (press ?
- a_focused_pressed_max :
- a_focused_unpressed_max) :
- (press ?
- a_unfocused_pressed_max :
- a_unfocused_unpressed_max)),
- 0, 0, BUTTON_SIZE, BUTTON_SIZE);
+ a = (client_focused(self->frame.client) ?
+ (press ? a_focused_pressed_max : a_focused_unpressed_max) :
+ (press ? a_unfocused_pressed_max : a_unfocused_unpressed_max));
+ RECT_SET(a->texture[0].position, 0, 0, BUTTON_SIZE,BUTTON_SIZE);
+ paint(self->max, a, 0, 0, BUTTON_SIZE, BUTTON_SIZE);
}
static void render_iconify(ObFrame *self)
{
+ Appearance *a;
+
if (self->iconify_x < 0) return;
- paint(self->iconify, (client_focused(self->frame.client) ?
- (self->iconify_press ?
- a_focused_pressed_iconify :
- a_focused_unpressed_iconify) :
- (self->iconify_press ?
- a_unfocused_pressed_iconify :
- a_unfocused_unpressed_iconify)),
- 0, 0, BUTTON_SIZE, BUTTON_SIZE);
+ a = (client_focused(self->frame.client) ?
+ (self->iconify_press ?
+ a_focused_pressed_iconify : a_focused_unpressed_iconify) :
+ (self->iconify_press ?
+ a_unfocused_pressed_iconify : a_unfocused_unpressed_iconify));
+ RECT_SET(a->texture[0].position, 0, 0, BUTTON_SIZE,BUTTON_SIZE);
+ paint(self->iconify, a, 0, 0, BUTTON_SIZE, BUTTON_SIZE);
}
static void render_desk(ObFrame *self)
{
+ Appearance *a;
+
gboolean press = self->desk_press ||
self->frame.client->desktop == DESKTOP_ALL;
if (self->desk_x < 0) return;
- paint(self->desk, (client_focused(self->frame.client) ?
- (press ?
- a_focused_pressed_desk :
- a_focused_unpressed_desk) :
- (press ?
- a_unfocused_pressed_desk :
- a_unfocused_unpressed_desk)),
- 0, 0, BUTTON_SIZE, BUTTON_SIZE);
+ a = (client_focused(self->frame.client) ?
+ (press ? a_focused_pressed_desk : a_focused_unpressed_desk) :
+ (press ? a_unfocused_pressed_desk : a_unfocused_unpressed_desk));
+ RECT_SET(a->texture[0].position, 0, 0, BUTTON_SIZE,BUTTON_SIZE);
+ paint(self->desk, a, 0, 0, BUTTON_SIZE, BUTTON_SIZE);
}
static void render_close(ObFrame *self)
{
+ Appearance *a;
+
if (self->close_x < 0) return;
- paint(self->close, (client_focused(self->frame.client) ?
- (self->close_press ?
- a_focused_pressed_close :
- a_focused_unpressed_close) :
- (self->close_press ?
- a_unfocused_pressed_close :
- a_unfocused_unpressed_close)),
- 0, 0, BUTTON_SIZE, BUTTON_SIZE);
+ a = (client_focused(self->frame.client) ?
+ (self->close_press ?
+ a_focused_pressed_close : a_focused_unpressed_close) :
+ (self->close_press ?
+ a_unfocused_pressed_close : a_unfocused_unpressed_close));
+ RECT_SET(a->texture[0].position, 0, 0, BUTTON_SIZE,BUTTON_SIZE);
+ paint(self->close, a, 0, 0, BUTTON_SIZE, BUTTON_SIZE);
}
GQuark get_context(Client *client, Window win)