namespace ob {
-OBFrame::OBFrame(const OBClient *client, const otk::Style *style)
+OBFrame::OBFrame(OBClient *client, const otk::Style *style)
: _client(client),
_screen(otk::OBDisplay::screenInfo(client->screen()))
{
// possible letter, all of the letters are valid, and L exists somewhere in
// the string!
+ // the size of the label. this ASSUMES the layout has only buttons other
+ // that the ONE LABEL!!
+ // adds an extra sep so that there's a space on either side of the
+ // titlebar.. note: x = sep, below.
+ _label_area.setWidth(_label_area.width() -
+ ((_button_iconify_area.width() + sep) *
+ (layout.size() - 1) + sep));
+
int x = sep;
for (int i = 0, len = layout.size(); i < len; ++i) {
otk::Rect *area;
continue; // just to fuck with g++
}
area->setX(x);
- if (layout[i] != 'L')
- _label_area.setWidth(_label_area.width() - area->width());
x += sep + area->width();
}
}
void OBFrame::grabClient()
{
- XGrabServer(otk::OBDisplay::display);
-
// select the event mask on the frame
- XSelectInput(otk::OBDisplay::display, _window, SubstructureRedirectMask);
+ //XSelectInput(otk::OBDisplay::display, _window, SubstructureRedirectMask);
// reparent the client to the frame
- XSelectInput(otk::OBDisplay::display, _client->window(),
- OBClient::event_mask & ~StructureNotifyMask);
XReparentWindow(otk::OBDisplay::display, _client->window(), _window, 0, 0);
- XSelectInput(otk::OBDisplay::display, _client->window(),
- OBClient::event_mask);
+ _client->ignore_unmaps++;
// raise the client above the frame
- XRaiseWindow(otk::OBDisplay::display, _client->window());
+ //XRaiseWindow(otk::OBDisplay::display, _client->window());
// map the client so it maps when the frame does
XMapWindow(otk::OBDisplay::display, _client->window());
- XUngrabServer(otk::OBDisplay::display);
-
update();
}
Window w = XCreateWindow(otk::OBDisplay::display, parent, 0, 0, 1, 1, 0,
_screen->getDepth(), InputOutput,
_screen->getVisual(), create_mask, &attrib_create);
- XRaiseWindow(otk::OBDisplay::display, w); // raise above the parent
return w;
}