::running = false;
XErrorHandler old = XSetErrorHandler(::anotherWMRunning);
- XSelectInput(otk::OBDisplay::display, _info->getRootWindow(),
+ XSelectInput(otk::OBDisplay::display, _info->rootWindow(),
OBScreen::event_mask);
XSync(otk::OBDisplay::display, false);
XSetErrorHandler(old);
if (! _managed) return; // was unable to manage the screen
printf(_("Managing screen %d: visual 0x%lx, depth %d\n"),
- _number, XVisualIDFromVisual(_info->getVisual()), _info->getDepth());
+ _number, XVisualIDFromVisual(_info->visual()), _info->depth());
- Openbox::instance->property()->set(_info->getRootWindow(),
+ Openbox::instance->property()->set(_info->rootWindow(),
otk::OBProperty::openbox_pid,
otk::OBProperty::Atom_Cardinal,
(unsigned long) getpid());
// set the mouse cursor for the root window (the default cursor)
- XDefineCursor(otk::OBDisplay::display, _info->getRootWindow(),
+ XDefineCursor(otk::OBDisplay::display, _info->rootWindow(),
Openbox::instance->cursors().session);
// initialize the shit that is used for all drawing on the screen
// Set the netwm atoms for geomtery and viewport
- unsigned long geometry[] = { _info->getWidth(),
- _info->getHeight() };
- Openbox::instance->property()->set(_info->getRootWindow(),
+ unsigned long geometry[] = { _info->width(),
+ _info->height() };
+ Openbox::instance->property()->set(_info->rootWindow(),
otk::OBProperty::net_desktop_geometry,
otk::OBProperty::Atom_Cardinal,
geometry, 2);
unsigned long viewport[] = { 0, 0 };
- Openbox::instance->property()->set(_info->getRootWindow(),
+ Openbox::instance->property()->set(_info->rootWindow(),
otk::OBProperty::net_desktop_viewport,
otk::OBProperty::Atom_Cardinal,
viewport, 2);
+ // create the window which gets focus when no clients get it
+ XSetWindowAttributes attr;
+ attr.override_redirect = true;
+ _focuswindow = XCreateWindow(otk::OBDisplay::display, _info->rootWindow(),
+ -100, -100, 1, 1, 0, 0, InputOnly,
+ _info->visual(), CWOverrideRedirect, &attr);
+ XMapWindow(otk::OBDisplay::display, _focuswindow);
+
// these may be further updated if any pre-existing windows are found in
// the manageExising() function
setClientList(); // initialize the client lists, which will be empty
if (! _managed) return;
// unmanage all windows
- while (!_clients.empty())
- unmanageWindow(_clients.front());
+ while (!clients.empty())
+ unmanageWindow(clients.front());
delete _image_control;
}
{
unsigned int i, j, nchild;
Window r, p, *children;
- XQueryTree(otk::OBDisplay::display, _info->getRootWindow(), &r, &p,
+ XQueryTree(otk::OBDisplay::display, _info->rootWindow(), &r, &p,
&children, &nchild);
// preen the window list of all icon windows... for better dockapp support
}
_area.setRect(current_left, current_top,
- _info->getWidth() - (current_left + current_right),
- _info->getHeight() - (current_top + current_bottom));
+ _info->width() - (current_left + current_right),
+ _info->height() - (current_top + current_bottom));
/*
#ifdef XINERAMA
Window *windows;
// create an array of the window ids
- if (_clients.size() > 0) {
+ if (clients.size() > 0) {
Window *win_it;
- windows = new Window[_clients.size()];
+ windows = new Window[clients.size()];
win_it = windows;
- ClientList::const_iterator it = _clients.begin();
- const ClientList::const_iterator end = _clients.end();
+ ClientList::const_iterator it = clients.begin();
+ const ClientList::const_iterator end = clients.end();
for (; it != end; ++it, ++win_it)
*win_it = (*it)->window();
} else
windows = (Window*) 0;
- Openbox::instance->property()->set(_info->getRootWindow(),
+ Openbox::instance->property()->set(_info->rootWindow(),
otk::OBProperty::net_client_list,
otk::OBProperty::Atom_Window,
- windows, _clients.size());
+ windows, clients.size());
- if (_clients.size())
+ if (clients.size())
delete [] windows;
setStackingList();
void OBScreen::setWorkArea() {
unsigned long area[] = { _area.x(), _area.y(),
_area.width(), _area.height() };
- Openbox::instance->property()->set(_info->getRootWindow(),
+ Openbox::instance->property()->set(_info->rootWindow(),
otk::OBProperty::net_workarea,
otk::OBProperty::Atom_Cardinal,
area, 4);
client->frame = new OBFrame(client, &_style);
// add to the wm's map
- Openbox::instance->addClient(client->frame->getWindow(), client);
+ Openbox::instance->addClient(client->frame->window(), client);
Openbox::instance->addClient(client->frame->plate(), client);
Openbox::instance->addClient(client->frame->titlebar(), client);
Openbox::instance->addClient(client->frame->label(), client);
otk::OBDisplay::ungrab();
// add to the screen's list
- _clients.push_back(client);
+ clients.push_back(client);
// update the root properties
setClientList();
}
// remove from the wm's map
Openbox::instance->removeClient(client->window());
- Openbox::instance->removeClient(frame->getWindow());
+ Openbox::instance->removeClient(frame->window());
Openbox::instance->removeClient(frame->plate());
Openbox::instance->removeClient(frame->titlebar());
Openbox::instance->removeClient(frame->label());
client->frame = 0;
// remove from the screen's list
- _clients.remove(client);
+ clients.remove(client);
delete client;
// update the root properties