X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fframe.cc;h=cd73f29ad1addc9db3cefec49d0776d765691d92;hb=7048f64f4580b8d43176ba2e3114c339c0013a40;hp=12a42ec2a9b481ce402e688ad69f08c56fc66bc5;hpb=77ab46d1e35d48e73c201e6de88b26f48bb06425;p=chaz%2Fopenbox diff --git a/src/frame.cc b/src/frame.cc index 12a42ec2..cd73f29a 100644 --- a/src/frame.cc +++ b/src/frame.cc @@ -23,11 +23,11 @@ namespace ob { 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), @@ -43,10 +43,10 @@ Frame::Frame(Client *client, otk::Style *style) 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()); @@ -64,30 +64,30 @@ Frame::~Frame() } -void Frame::setTitle(const std::string &text) +void Frame::setTitle(const otk::ustring &text) { _label.setText(text); _label.update(); } -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) { @@ -129,11 +129,11 @@ void Frame::adjustSize() 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 = @@ -153,11 +153,11 @@ void Frame::adjustSize() _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) @@ -172,7 +172,7 @@ void Frame::adjustSize() // separation between titlebar elements const int sep = bevel + 1; - std::string layout; + otk::ustring layout; if (!python_get_string("titlebar_layout", &layout)) layout = "ILMC"; @@ -223,7 +223,7 @@ void Frame::adjustSize() 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!! @@ -275,7 +275,7 @@ void Frame::adjustSize() 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 @@ -357,17 +357,17 @@ void Frame::adjustShape() { #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); @@ -391,7 +391,7 @@ void Frame::adjustShape() ++num; } - XShapeCombineRectangles(otk::Display::display, window(), + XShapeCombineRectangles(**otk::display, window(), ShapeBounding, 0, 0, xrect, num, ShapeUnion, Unsorted); } @@ -402,7 +402,7 @@ void Frame::adjustShape() 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 @@ -412,15 +412,15 @@ void Frame::grabClient() 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(); @@ -432,15 +432,15 @@ void Frame::releaseClient() 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()); }