X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=engines%2Fopenbox%2Fopenbox.c;h=f7113c877844bf546b6cb5834b928c547b517815;hb=7c6c4984b39b3e107c1a1f8de88008e0218ea805;hp=6f715480abf6c7abee27d1904ecbf5c499646756;hpb=3fb9753fa4a07d4b555dcf48aa59c97211ece4ef;p=chaz%2Fopenbox diff --git a/engines/openbox/openbox.c b/engines/openbox/openbox.c index 6f715480..f7113c87 100644 --- a/engines/openbox/openbox.c +++ b/engines/openbox/openbox.c @@ -176,7 +176,7 @@ gboolean startup() 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); @@ -408,7 +408,6 @@ void frame_adjust_shape(ObFrame *self) void frame_adjust_area(ObFrame *self, gboolean moved, gboolean resized) { - g_message("adjust_area: %d %d", moved, resized); if (resized) { if (self->frame.client->decorations & Decor_Border) { self->bwidth = s_bwidth; @@ -571,18 +570,18 @@ void frame_grab_client(ObFrame *self, Client *client) 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) @@ -606,18 +605,18 @@ 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); } @@ -782,6 +781,7 @@ static void render_label(ObFrame *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); } @@ -790,70 +790,80 @@ static void render_icon(ObFrame *self) { 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)