mask = 0;
if (visual) {
/* client has a 32-bit visual */
- mask |= CWColormap | CWBackPixel | CWBorderPixel;
+ mask = CWColormap | CWBackPixel | CWBorderPixel;
/* create a colormap with the visual */
self->colormap = attrib.colormap =
XCreateColormap(ob_display,
mask = 0;
if (visual) {
/* client has a 32-bit visual */
- mask |= CWColormap | CWBackPixel | CWBorderPixel;
+ mask = CWColormap | CWBackPixel | CWBorderPixel;
attrib.colormap = RrColormap(ob_rr_inst);
}
set_theme_statics(self);
- return (ObFrame*)self;
+ return self;
}
static void set_theme_statics(ObFrame *self)
ob_rr_theme->paddingx + 1, ob_rr_theme->title_height);
XResizeWindow(ob_display, self->trrresize,
ob_rr_theme->paddingx + 1, ob_rr_theme->title_height);
-
- /* set up the dynamic appearances */
- self->a_unfocused_title = RrAppearanceCopy(ob_rr_theme->a_unfocused_title);
- self->a_focused_title = RrAppearanceCopy(ob_rr_theme->a_focused_title);
- self->a_unfocused_label = RrAppearanceCopy(ob_rr_theme->a_unfocused_label);
- self->a_focused_label = RrAppearanceCopy(ob_rr_theme->a_focused_label);
- self->a_unfocused_handle =
- RrAppearanceCopy(ob_rr_theme->a_unfocused_handle);
- self->a_focused_handle = RrAppearanceCopy(ob_rr_theme->a_focused_handle);
- self->a_icon = RrAppearanceCopy(ob_rr_theme->a_icon);
}
static void free_theme_statics(ObFrame *self)
{
- RrAppearanceFree(self->a_unfocused_title);
- RrAppearanceFree(self->a_focused_title);
- RrAppearanceFree(self->a_unfocused_label);
- RrAppearanceFree(self->a_focused_label);
- RrAppearanceFree(self->a_unfocused_handle);
- RrAppearanceFree(self->a_focused_handle);
- RrAppearanceFree(self->a_icon);
}
void frame_free(ObFrame *self)
g_hash_table_insert(window_map, &self->innertop, self->client);
g_hash_table_insert(window_map, &self->innerright, self->client);
g_hash_table_insert(window_map, &self->innerbottom, self->client);
+ g_hash_table_insert(window_map, &self->innerblb, self->client);
+ g_hash_table_insert(window_map, &self->innerbll, self->client);
+ g_hash_table_insert(window_map, &self->innerbrb, self->client);
+ g_hash_table_insert(window_map, &self->innerbrr, self->client);
g_hash_table_insert(window_map, &self->title, self->client);
g_hash_table_insert(window_map, &self->label, self->client);
g_hash_table_insert(window_map, &self->max, self->client);
g_hash_table_remove(window_map, &self->innertop);
g_hash_table_remove(window_map, &self->innerright);
g_hash_table_remove(window_map, &self->innerbottom);
+ g_hash_table_remove(window_map, &self->innerblb);
+ g_hash_table_remove(window_map, &self->innerbll);
+ g_hash_table_remove(window_map, &self->innerbrb);
+ g_hash_table_remove(window_map, &self->innerbrr);
g_hash_table_remove(window_map, &self->title);
g_hash_table_remove(window_map, &self->label);
g_hash_table_remove(window_map, &self->max);
self->label_width = self->width - (ob_rr_theme->paddingx + 1) * 2;
self->leftmost = self->rightmost = OB_FRAME_CONTEXT_NONE;
- /* figure out what's being show, find each element's position, and the
+ /* figure out what's being shown, find each element's position, and the
width of the label
do the ones before the label, then after the label,
if (win == self->lgripbottom) return OB_FRAME_CONTEXT_BLCORNER;
if (win == self->handleright) return OB_FRAME_CONTEXT_BRCORNER;
if (win == self->rgrip) return OB_FRAME_CONTEXT_BRCORNER;
- if (win == self->rgripright) return OB_FRAME_CONTEXT_BLCORNER;
- if (win == self->rgriptop) return OB_FRAME_CONTEXT_BLCORNER;
- if (win == self->rgripbottom) return OB_FRAME_CONTEXT_BLCORNER;
+ if (win == self->rgripright) return OB_FRAME_CONTEXT_BRCORNER;
+ if (win == self->rgriptop) return OB_FRAME_CONTEXT_BRCORNER;
+ if (win == self->rgripbottom) return OB_FRAME_CONTEXT_BRCORNER;
if (win == self->title) return OB_FRAME_CONTEXT_TITLEBAR;
if (win == self->titlebottom) return OB_FRAME_CONTEXT_TITLEBAR;
if (win == self->titleleft) return OB_FRAME_CONTEXT_TLCORNER;
if (win == self->innerleft) return OB_FRAME_CONTEXT_LEFT;
if (win == self->innerbottom) return OB_FRAME_CONTEXT_BOTTOM;
if (win == self->innerright) return OB_FRAME_CONTEXT_RIGHT;
+ if (win == self->innerbll) return OB_FRAME_CONTEXT_BLCORNER;
+ if (win == self->innerblb) return OB_FRAME_CONTEXT_BLCORNER;
+ if (win == self->innerbrr) return OB_FRAME_CONTEXT_BRCORNER;
+ if (win == self->innerbrb) return OB_FRAME_CONTEXT_BRCORNER;
if (win == self->max) return OB_FRAME_CONTEXT_MAXIMIZE;
if (win == self->iconify) return OB_FRAME_CONTEXT_ICONIFY;
if (win == self->close) return OB_FRAME_CONTEXT_CLOSE;
g_get_current_time(&now);
time = frame_animate_iconify_time_left(self, &now);
- if (time == 0 || iconifying) {
+ if ((time > 0 && iconifying) || (time == 0 && !iconifying)) {
/* start where the frame is supposed to be */
x = self->area.x;
y = self->area.y;
h = self->size.top; /* just the titlebar */
}
+ XMoveResizeWindow(ob_display, self->window, x, y, w, h);
+ XFlush(ob_display);
+
if (time == 0)
frame_end_iconify_animation(self);
- else {
- XMoveResizeWindow(ob_display, self->window, x, y, w, h);
- XFlush(ob_display);
- }
return time > 0; /* repeat until we're out of time */
}