: otk::OtkWidget(Openbox::instance, style),
_client(client),
_screen(otk::OBDisplay::screenInfo(client->screen())),
+ _plate(this),
_titlebar(this),
_button_close(&_titlebar),
_button_iconify(&_titlebar),
_handle.unmanaged();
_grip_left.unmanaged();
_grip_right.unmanaged();
+ _plate.unmanaged();
+
+ _plate.show();
_button_close.setText("X");
_button_iconify.setText("I");
assert(style);
otk::OtkWidget::setStyle(style);
+ // don't let grips change textures when they are pressed
+ _grip_left.setPressedFocusTexture(_grip_left.getTexture());
+ _grip_left.setPressedUnfocusTexture(_grip_left.getUnfocusTexture());
+ _grip_right.setPressedFocusTexture(_grip_right.getTexture());
+ _grip_right.setPressedUnfocusTexture(_grip_right.getUnfocusTexture());
// if a style was previously set, then 'replace' is true, cause we're
// replacing a style
_style = style;
+ // XXX: change when focus changes!
+ XSetWindowBorder(otk::OBDisplay::display, _plate.getWindow(),
+ _style->getFrameFocus()->color().pixel());
+
XSetWindowBorder(otk::OBDisplay::display, getWindow(),
_style->getBorderColor()->pixel());
XSetWindowBorder(otk::OBDisplay::display, _titlebar.getWindow(),
XSetWindowBorder(otk::OBDisplay::display, _handle.getWindow(),
_style->getBorderColor()->pixel());
- // XXX: if (focused)
- XSetWindowBackground(otk::OBDisplay::display, getWindow(),
- _style->getFrameFocus()->color().pixel());
- // XXX: else
- // XXX: XSetWindowBackground(otk::OBDisplay::display, _window,
- // XXX: _style->getFrameUnfocus().color().pixel());
-
// if !replace, then adjust() will get called after the client is grabbed!
if (replace)
adjust(); // size/position everything
int width; // the width of the client window and the border around it
int bwidth; // width to make borders
+ int cbwidth; // width of the inner client border
if (_decorations & OBClient::Decor_Border) {
bwidth = _style->getBorderWidth();
+ cbwidth = _style->getFrameWidth();
_size.left = _size.top = _size.bottom = _size.right =
_style->getFrameWidth();
width = _client->area().width() + _style->getFrameWidth() * 2;
} else {
- bwidth = 0;
+ bwidth = cbwidth = 0;
_size.left = _size.top = _size.bottom = _size.right = 0;
width = _client->area().width();
}
+ XSetWindowBorderWidth(otk::OBDisplay::display, _plate.getWindow(), cbwidth);
+
XSetWindowBorderWidth(otk::OBDisplay::display, getWindow(), bwidth);
XSetWindowBorderWidth(otk::OBDisplay::display, _titlebar.getWindow(),
bwidth);
resize(_size.left + _size.right + _client->area().width(),
_size.top + _size.bottom + _client->area().height());
- XMoveWindow(otk::OBDisplay::display, _client->window(),
- _size.left, _size.top);
+ _plate.setGeometry(_size.left, _size.top, _client->area().width(),
+ _client->area().height());
// map/unmap all the windows
if (_decorations & OBClient::Decor_Titlebar) {
//XSelectInput(otk::OBDisplay::display, _window, SubstructureRedirectMask);
// reparent the client to the frame
- XReparentWindow(otk::OBDisplay::display, _client->window(), getWindow(), 0, 0);
+ XReparentWindow(otk::OBDisplay::display, _client->window(),
+ _plate.getWindow(), 0, 0);
_client->ignore_unmaps++;
// raise the client above the frame