OBFrame::OBFrame(OBClient *client, otk::Style *style)
: otk::OtkWidget(Openbox::instance, style),
+ OBWidget(Type_Frame),
_client(client),
_screen(otk::OBDisplay::screenInfo(client->screen())),
- _plate(this),
- _titlebar(this),
- _button_close(&_titlebar),
- _button_iconify(&_titlebar),
- _button_max(&_titlebar),
- _button_stick(&_titlebar),
- _label(&_titlebar),
- _handle(this),
- _grip_left(&_handle),
- _grip_right(&_handle),
+ _plate(this, OBWidget::Type_Plate),
+ _titlebar(this, OBWidget::Type_Titlebar),
+ _button_close(&_titlebar, OBWidget::Type_CloseButton),
+ _button_iconify(&_titlebar, OBWidget::Type_IconifyButton),
+ _button_max(&_titlebar, OBWidget::Type_MaximizeButton),
+ _button_stick(&_titlebar, OBWidget::Type_StickyButton),
+ _label(&_titlebar, OBWidget::Type_Label),
+ _handle(this, OBWidget::Type_Handle),
+ _grip_left(&_handle, OBWidget::Type_LeftGrip),
+ _grip_right(&_handle, OBWidget::Type_RightGrip),
_decorations(client->decorations())
{
assert(client);
_grip_left.setCursor(Openbox::instance->cursors().ll_angle);
_grip_right.setCursor(Openbox::instance->cursors().lr_angle);
- _plate.show();
-
_button_close.setText("X");
_button_iconify.setText("I");
_button_max.setText("M");
_style = 0;
setStyle(style);
+ //XXX: uncomment me unfocus(); // stuff starts out focused in otk
+
+ _plate.show(); // the other stuff is shown based on decor settings
+
grabClient();
}
assert(style);
otk::OtkWidget::setStyle(style);
- // set the grips' textures
- _grip_left.setTexture(style->getGripFocus());
- _grip_left.setUnfocusTexture(style->getGripUnfocus());
- _grip_left.setPressedFocusTexture(style->getGripFocus());
- _grip_left.setPressedUnfocusTexture(style->getGripUnfocus());
- _grip_right.setTexture(style->getGripFocus());
- _grip_right.setUnfocusTexture(style->getGripUnfocus());
- _grip_right.setPressedFocusTexture(style->getGripFocus());
- _grip_right.setPressedUnfocusTexture(style->getGripUnfocus());
-
- _titlebar.setTexture(style->getTitleFocus());
- _titlebar.setUnfocusTexture(style->getTitleUnfocus());
- _handle.setTexture(style->getHandleFocus());
- _handle.setUnfocusTexture(style->getHandleUnfocus());
-
+
// if a style was previously set, then 'replace' is true, cause we're
// replacing a style
bool replace = (_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(),
- _style->getBorderColor()->pixel());
- XSetWindowBorder(otk::OBDisplay::display, _grip_left.getWindow(),
- _style->getBorderColor()->pixel());
- XSetWindowBorder(otk::OBDisplay::display, _grip_right.getWindow(),
- _style->getBorderColor()->pixel());
- XSetWindowBorder(otk::OBDisplay::display, _handle.getWindow(),
- _style->getBorderColor()->pixel());
-
+
// if !replace, then adjust() will get called after the client is grabbed!
if (replace) {
// size/position everything
cbwidth;
width = _client->area().width() + cbwidth * 2;
- XSetWindowBorderWidth(otk::OBDisplay::display, _plate.getWindow(), cbwidth);
-
- XSetWindowBorderWidth(otk::OBDisplay::display, getWindow(), bwidth);
- XSetWindowBorderWidth(otk::OBDisplay::display, _titlebar.getWindow(),
- bwidth);
- XSetWindowBorderWidth(otk::OBDisplay::display, _grip_left.getWindow(),
- bwidth);
- XSetWindowBorderWidth(otk::OBDisplay::display, _grip_right.getWindow(),
- bwidth);
- XSetWindowBorderWidth(otk::OBDisplay::display, _handle.getWindow(), bwidth);
+ _plate.setBorderWidth(cbwidth);
+ setBorderWidth(bwidth);
+ _titlebar.setBorderWidth(bwidth);
+ _grip_left.setBorderWidth(bwidth);
+ _grip_right.setBorderWidth(bwidth);
+ _handle.setBorderWidth(bwidth);
+
if (_decorations & OBClient::Decor_Titlebar) {
// set the titlebar size
_titlebar.setGeometry(-bwidth,