#include "client.h"
#include "openbox.h"
#include "grab.h"
+#include "debug.h"
#include "config.h"
#include "framerender.h"
#include "focus_cycle.h"
#include "focus_cycle_indicator.h"
#include "moveresize.h"
#include "screen.h"
-#include "render/theme.h"
+#include "obrender/theme.h"
#include "obt/display.h"
#include "obt/prop.h"
ObFrame *self;
Visual *visual;
- self = g_new0(ObFrame, 1);
+ self = g_slice_new0(ObFrame);
self->client = client;
visual = check_32bit_client(client);
if (self->colormap)
XFreeColormap(obt_display, self->colormap);
- g_free(self);
+ g_slice_free(ObFrame, self);
}
void frame_show(ObFrame *self)
self->max_vert = self->client->max_vert;
self->shaded = self->client->shaded;
- if (self->decorations & OB_FRAME_DECOR_BORDER ||
- (self->client->undecorated && config_theme_keepborder))
+ if (self->decorations & OB_FRAME_DECOR_BORDER)
self->bwidth = ob_rr_theme->fbwidth;
else
self->bwidth = 0;
- if (self->decorations & OB_FRAME_DECOR_BORDER) {
+ if (self->decorations & OB_FRAME_DECOR_BORDER &&
+ !self->client->undecorated)
+ {
self->cbwidth_l = self->cbwidth_r = ob_rr_theme->cbwidthx;
self->cbwidth_t = self->cbwidth_b = ob_rr_theme->cbwidthy;
} else
STRUT_SET(self->size,
self->cbwidth_l + (!self->max_horz ? self->bwidth : 0),
- self->cbwidth_t +
- (!self->max_horz || !self->max_vert ||
- !self->client->undecorated ? self->bwidth : 0),
+ self->cbwidth_t + self->bwidth,
self->cbwidth_r + (!self->max_horz ? self->bwidth : 0),
self->cbwidth_b +
(!self->max_horz || !self->max_vert ? self->bwidth : 0));
if (focus_cycle_target == self->client)
focus_cycle_update_indicator(self->client);
}
- if (resized && (self->decorations & OB_FRAME_DECOR_TITLEBAR))
+ if (resized && (self->decorations & OB_FRAME_DECOR_TITLEBAR) &&
+ self->label_width)
+ {
XResizeWindow(obt_display, self->label, self->label_width,
ob_rr_theme->label_height);
-
+ }
}
static void frame_adjust_cursors(ObFrame *self)
void frame_adjust_focus(ObFrame *self, gboolean hilite)
{
+ ob_debug_type(OB_DEBUG_FOCUS,
+ "Frame for 0x%x has focus: %d\n",
+ self->client->window, hilite);
self->focused = hilite;
self->need_render = TRUE;
framerender_frame(self);
if (self->client->icon_geometry.width == 0) {
/* there is no icon geometry set so just go straight down */
- Rect *a = screen_physical_area_monitor
- (screen_find_monitor(&self->area));
+ const Rect *a;
+
+ a = screen_physical_area_monitor(screen_find_monitor(&self->area));
iconx = self->area.x + self->area.width / 2 + 32;
icony = a->y + a->width;
iconw = 64;
- g_free(a);
} else {
iconx = self->client->icon_geometry.x;
icony = self->client->icon_geometry.y;