const long Frame::event_mask;
-Frame::Frame(Client *client, otk::Style *style)
- : otk::Widget(Openbox::instance, style, Horizontal, 0, 1, true),
+Frame::Frame(Client *client, otk::RenderStyle *style)
+ : otk::Widget(openbox, style, Horizontal, 0, 1, true),
WidgetBase(WidgetBase::Type_Frame),
_client(client),
- _screen(otk::Display::screenInfo(client->screen())),
+ _screen(otk::display->screenInfo(client->screen())),
_plate(this, WidgetBase::Type_Plate),
_titlebar(this, WidgetBase::Type_Titlebar),
_button_close(&_titlebar, WidgetBase::Type_CloseButton),
assert(client);
assert(style);
- XSelectInput(otk::Display::display, _window, Frame::event_mask);
+ XSelectInput(**otk::display, _window, Frame::event_mask);
- _grip_left.setCursor(Openbox::instance->cursors().ll_angle);
- _grip_right.setCursor(Openbox::instance->cursors().lr_angle);
+ _grip_left.setCursor(openbox->cursors().ll_angle);
+ _grip_right.setCursor(openbox->cursors().lr_angle);
_label.setText(_client->title());
}
-void Frame::setStyle(otk::Style *style)
+void Frame::setStyle(otk::RenderStyle *style)
{
assert(style);
- otk::Widget::setStyle(style);
-
// if a style was previously set, then 'replace' is true, cause we're
// replacing a style
bool replace = (_style);
+ otk::Widget::setStyle(style);
+
if (replace) {
// XXX: do shit here whatever
}
_style = style;
- setBorderColor(_style->getBorderColor());
+ setBorderColor(_style->frameBorderColor());
// if !replace, then adjust() will get called after the client is grabbed!
if (replace) {
int bwidth; // width to make borders
int cbwidth; // width of the inner client border
int butsize=0; // width and height of the titlebar buttons
- const int bevel = _style->getBevelWidth();
+ const int bevel = _style->bevelWidth();
if (_decorations & Client::Decor_Border) {
- bwidth = _style->getBorderWidth();
- cbwidth = _style->getFrameWidth();
+ bwidth = _style->frameBorderWidth();
+ cbwidth = _style->clientBorderWidth();
} else
bwidth = cbwidth = 0;
_innersize.left = _innersize.top = _innersize.bottom = _innersize.right =
_titlebar.setGeometry(-bwidth,
-bwidth,
width,
- _style->getFont()->height() + bevel * 2);
+ _style->labelFont()->height() + (bevel * 2));
_innersize.top += _titlebar.height() + bwidth;
// set the label size
- _label.setGeometry(0, bevel, width, _style->getFont()->height());
+ _label.setGeometry(0, bevel, width, _style->labelFont()->height());
// set the buttons sizes
butsize = _label.height() - 2;
if (_decorations & Client::Decor_Iconify)
layout.erase(i--, 1);
}
if (!tit_l)
- layout.append(1, 'L');
+ layout += "L";
// the size of the label. this ASSUMES the layout has only buttons other
// that the ONE LABEL!!
if (_decorations & Client::Decor_Handle) {
_handle.setGeometry(-bwidth,
_innersize.top + _client->area().height() + cbwidth,
- width, _style->getHandleWidth());
+ width, _style->handleWidth());
_grip_left.setGeometry(-bwidth,
-bwidth,
// XXX: get a Point class in otk and use that for
{
#ifdef SHAPE
int bwidth = (_decorations & Client::Decor_Border) ?
- _style->getBorderWidth() : 0;
+ _style->frameBorderWidth() : 0;
if (!_client->shaped()) {
// clear the shape on the frame window
- XShapeCombineMask(otk::Display::display, _window, ShapeBounding,
+ XShapeCombineMask(**otk::display, _window, ShapeBounding,
_innersize.left,
_innersize.top,
None, ShapeSet);
} else {
// make the frame's shape match the clients
- XShapeCombineShape(otk::Display::display, _window, ShapeBounding,
+ XShapeCombineShape(**otk::display, _window, ShapeBounding,
_innersize.left,
_innersize.top,
_client->window(), ShapeBounding, ShapeSet);
++num;
}
- XShapeCombineRectangles(otk::Display::display, window(),
+ XShapeCombineRectangles(**otk::display, window(),
ShapeBounding, 0, 0, xrect, num,
ShapeUnion, Unsorted);
}
void Frame::grabClient()
{
// reparent the client to the frame
- XReparentWindow(otk::Display::display, _client->window(),
+ XReparentWindow(**otk::display, _client->window(),
_plate.window(), 0, 0);
/*
When reparenting the client window, it is usually not mapped yet, since
member set the root window, and one set to the client, but both get handled
and need to be ignored.
*/
- if (Openbox::instance->state() == Openbox::State_Starting)
+ if (openbox->state() == Openbox::State_Starting)
_client->ignore_unmaps += 2;
// select the event mask on the client's parent (to receive config req's)
- XSelectInput(otk::Display::display, _plate.window(),
+ XSelectInput(**otk::display, _plate.window(),
SubstructureRedirectMask);
// map the client so it maps when the frame does
- XMapWindow(otk::Display::display, _client->window());
+ XMapWindow(**otk::display, _client->window());
adjustSize();
adjustPosition();
XEvent ev;
// check if the app has already reparented its window away
- if (XCheckTypedWindowEvent(otk::Display::display, _client->window(),
+ if (XCheckTypedWindowEvent(**otk::display, _client->window(),
ReparentNotify, &ev)) {
- XPutBackEvent(otk::Display::display, &ev);
+ XPutBackEvent(**otk::display, &ev);
// re-map the window since the unmanaging process unmaps it
- XMapWindow(otk::Display::display, _client->window());
+ XMapWindow(**otk::display, _client->window());
} else {
// according to the ICCCM - if the client doesn't reparent itself, then we
// will reparent the window to root for them
- XReparentWindow(otk::Display::display, _client->window(),
+ XReparentWindow(**otk::display, _client->window(),
_screen->rootWindow(),
_client->area().x(), _client->area().y());
}