update to cleaned up otk api
This commit is contained in:
parent
06de24ec66
commit
68194ce957
10 changed files with 71 additions and 93 deletions
|
@ -17,7 +17,7 @@ openbox3_LDADD=../otk/libotk.a @LIBINTL@
|
||||||
|
|
||||||
openbox3_SOURCES= actions.cc client.cc frame.cc openbox.cc screen.cc \
|
openbox3_SOURCES= actions.cc client.cc frame.cc openbox.cc screen.cc \
|
||||||
main.cc rootwindow.cc backgroundwidget.cc labelwidget.cc \
|
main.cc rootwindow.cc backgroundwidget.cc labelwidget.cc \
|
||||||
buttonwidget.cc python.cc python_client.cc
|
buttonwidget.cc python.cc
|
||||||
|
|
||||||
MAINTAINERCLEANFILES= Makefile.in
|
MAINTAINERCLEANFILES= Makefile.in
|
||||||
|
|
||||||
|
|
|
@ -22,11 +22,14 @@ extern "C" {
|
||||||
#include "otk/rect.hh"
|
#include "otk/rect.hh"
|
||||||
#include "otk/eventhandler.hh"
|
#include "otk/eventhandler.hh"
|
||||||
#include "widget.hh"
|
#include "widget.hh"
|
||||||
|
#include "python.hh"
|
||||||
|
|
||||||
namespace ob {
|
namespace ob {
|
||||||
|
|
||||||
class OBFrame;
|
class OBFrame;
|
||||||
|
|
||||||
|
extern PyTypeObject OBClient_Type;
|
||||||
|
|
||||||
//! Maintains the state of a client window.
|
//! Maintains the state of a client window.
|
||||||
/*!
|
/*!
|
||||||
OBClient maintains the state of a client window. The state consists of the
|
OBClient maintains the state of a client window. The state consists of the
|
||||||
|
@ -40,6 +43,7 @@ class OBFrame;
|
||||||
change (such as causing a redraw of the titlebar after the title is changed).
|
change (such as causing a redraw of the titlebar after the title is changed).
|
||||||
*/
|
*/
|
||||||
class OBClient : public otk::OtkEventHandler, public OBWidget {
|
class OBClient : public otk::OtkEventHandler, public OBWidget {
|
||||||
|
PyObject_HEAD
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//! The frame window which decorates around the client window
|
//! The frame window which decorates around the client window
|
||||||
|
|
40
src/frame.cc
40
src/frame.cc
|
@ -41,7 +41,7 @@ OBFrame::OBFrame(OBClient *client, otk::Style *style)
|
||||||
assert(client);
|
assert(client);
|
||||||
assert(style);
|
assert(style);
|
||||||
|
|
||||||
XSelectInput(otk::OBDisplay::display, getWindow(), OBFrame::event_mask);
|
XSelectInput(otk::OBDisplay::display, window(), OBFrame::event_mask);
|
||||||
|
|
||||||
unmanaged();
|
unmanaged();
|
||||||
_titlebar.unmanaged();
|
_titlebar.unmanaged();
|
||||||
|
@ -98,7 +98,7 @@ void OBFrame::setStyle(otk::Style *style)
|
||||||
_style = style;
|
_style = style;
|
||||||
|
|
||||||
// XXX: change when focus changes!
|
// XXX: change when focus changes!
|
||||||
XSetWindowBorder(otk::OBDisplay::display, getWindow(),
|
XSetWindowBorder(otk::OBDisplay::display, window(),
|
||||||
_style->getBorderColor()->pixel());
|
_style->getBorderColor()->pixel());
|
||||||
|
|
||||||
// if !replace, then adjust() will get called after the client is grabbed!
|
// if !replace, then adjust() will get called after the client is grabbed!
|
||||||
|
@ -191,23 +191,23 @@ void OBFrame::adjustSize()
|
||||||
for (int i = 0, len = layout.size(); i < len; ++i) {
|
for (int i = 0, len = layout.size(); i < len; ++i) {
|
||||||
switch (layout[i]) {
|
switch (layout[i]) {
|
||||||
case 'I':
|
case 'I':
|
||||||
_button_iconify.move(x, _button_iconify.getRect().y());
|
_button_iconify.move(x, _button_iconify.rect().y());
|
||||||
x += _button_iconify.width();
|
x += _button_iconify.width();
|
||||||
break;
|
break;
|
||||||
case 'L':
|
case 'L':
|
||||||
_label.move(x, _label.getRect().y());
|
_label.move(x, _label.rect().y());
|
||||||
x += _label.width();
|
x += _label.width();
|
||||||
break;
|
break;
|
||||||
case 'M':
|
case 'M':
|
||||||
_button_max.move(x, _button_max.getRect().y());
|
_button_max.move(x, _button_max.rect().y());
|
||||||
x += _button_max.width();
|
x += _button_max.width();
|
||||||
break;
|
break;
|
||||||
case 'S':
|
case 'S':
|
||||||
_button_stick.move(x, _button_stick.getRect().y());
|
_button_stick.move(x, _button_stick.rect().y());
|
||||||
x += _button_stick.width();
|
x += _button_stick.width();
|
||||||
break;
|
break;
|
||||||
case 'C':
|
case 'C':
|
||||||
_button_close.move(x, _button_close.getRect().y());
|
_button_close.move(x, _button_close.rect().y());
|
||||||
x += _button_close.width();
|
x += _button_close.width();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -227,7 +227,7 @@ void OBFrame::adjustSize()
|
||||||
// the 'buttons size' since theyre all the same
|
// the 'buttons size' since theyre all the same
|
||||||
_button_iconify.width() * 2,
|
_button_iconify.width() * 2,
|
||||||
_handle.height());
|
_handle.height());
|
||||||
_grip_right.setGeometry(((_handle.getRect().right() + 1) -
|
_grip_right.setGeometry(((_handle.rect().right() + 1) -
|
||||||
_button_iconify.width() * 2),
|
_button_iconify.width() * 2),
|
||||||
-bwidth,
|
-bwidth,
|
||||||
// XXX: get a Point class in otk and use that for
|
// XXX: get a Point class in otk and use that for
|
||||||
|
@ -304,13 +304,13 @@ void OBFrame::adjustShape()
|
||||||
|
|
||||||
if (!_client->shaped()) {
|
if (!_client->shaped()) {
|
||||||
// clear the shape on the frame window
|
// clear the shape on the frame window
|
||||||
XShapeCombineMask(otk::OBDisplay::display, getWindow(), ShapeBounding,
|
XShapeCombineMask(otk::OBDisplay::display, window(), ShapeBounding,
|
||||||
_innersize.left,
|
_innersize.left,
|
||||||
_innersize.top,
|
_innersize.top,
|
||||||
None, ShapeSet);
|
None, ShapeSet);
|
||||||
} else {
|
} else {
|
||||||
// make the frame's shape match the clients
|
// make the frame's shape match the clients
|
||||||
XShapeCombineShape(otk::OBDisplay::display, getWindow(), ShapeBounding,
|
XShapeCombineShape(otk::OBDisplay::display, window(), ShapeBounding,
|
||||||
_innersize.left,
|
_innersize.left,
|
||||||
_innersize.top,
|
_innersize.top,
|
||||||
_client->window(), ShapeBounding, ShapeSet);
|
_client->window(), ShapeBounding, ShapeSet);
|
||||||
|
@ -319,22 +319,22 @@ void OBFrame::adjustShape()
|
||||||
XRectangle xrect[2];
|
XRectangle xrect[2];
|
||||||
|
|
||||||
if (_decorations & OBClient::Decor_Titlebar) {
|
if (_decorations & OBClient::Decor_Titlebar) {
|
||||||
xrect[0].x = _titlebar.getRect().x();
|
xrect[0].x = _titlebar.rect().x();
|
||||||
xrect[0].y = _titlebar.getRect().y();
|
xrect[0].y = _titlebar.rect().y();
|
||||||
xrect[0].width = _titlebar.width() + bwidth * 2; // XXX: this is useless once the widget handles borders!
|
xrect[0].width = _titlebar.width() + bwidth * 2; // XXX: this is useless once the widget handles borders!
|
||||||
xrect[0].height = _titlebar.height() + bwidth * 2;
|
xrect[0].height = _titlebar.height() + bwidth * 2;
|
||||||
++num;
|
++num;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_decorations & OBClient::Decor_Handle) {
|
if (_decorations & OBClient::Decor_Handle) {
|
||||||
xrect[1].x = _handle.getRect().x();
|
xrect[1].x = _handle.rect().x();
|
||||||
xrect[1].y = _handle.getRect().y();
|
xrect[1].y = _handle.rect().y();
|
||||||
xrect[1].width = _handle.width() + bwidth * 2; // XXX: this is useless once the widget handles borders!
|
xrect[1].width = _handle.width() + bwidth * 2; // XXX: this is useless once the widget handles borders!
|
||||||
xrect[1].height = _handle.height() + bwidth * 2;
|
xrect[1].height = _handle.height() + bwidth * 2;
|
||||||
++num;
|
++num;
|
||||||
}
|
}
|
||||||
|
|
||||||
XShapeCombineRectangles(otk::OBDisplay::display, getWindow(),
|
XShapeCombineRectangles(otk::OBDisplay::display, window(),
|
||||||
ShapeBounding, 0, 0, xrect, num,
|
ShapeBounding, 0, 0, xrect, num,
|
||||||
ShapeUnion, Unsorted);
|
ShapeUnion, Unsorted);
|
||||||
}
|
}
|
||||||
|
@ -347,11 +347,11 @@ void OBFrame::grabClient()
|
||||||
|
|
||||||
// reparent the client to the frame
|
// reparent the client to the frame
|
||||||
XReparentWindow(otk::OBDisplay::display, _client->window(),
|
XReparentWindow(otk::OBDisplay::display, _client->window(),
|
||||||
_plate.getWindow(), 0, 0);
|
_plate.window(), 0, 0);
|
||||||
_client->ignore_unmaps++;
|
_client->ignore_unmaps++;
|
||||||
|
|
||||||
// select the event mask on the client's parent (to receive config req's)
|
// select the event mask on the client's parent (to receive config req's)
|
||||||
XSelectInput(otk::OBDisplay::display, _plate.getWindow(),
|
XSelectInput(otk::OBDisplay::display, _plate.window(),
|
||||||
SubstructureRedirectMask);
|
SubstructureRedirectMask);
|
||||||
|
|
||||||
// map the client so it maps when the frame does
|
// map the client so it maps when the frame does
|
||||||
|
@ -374,7 +374,7 @@ void OBFrame::releaseClient(bool remap)
|
||||||
// according to the ICCCM - if the client doesn't reparent to
|
// according to the ICCCM - if the client doesn't reparent to
|
||||||
// root, then we have to do it for them
|
// root, then we have to do it for them
|
||||||
XReparentWindow(otk::OBDisplay::display, _client->window(),
|
XReparentWindow(otk::OBDisplay::display, _client->window(),
|
||||||
_screen->getRootWindow(),
|
_screen->rootWindow(),
|
||||||
_client->area().x(), _client->area().y());
|
_client->area().x(), _client->area().y());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -445,8 +445,8 @@ void OBFrame::clientGravity(int &x, int &y)
|
||||||
|
|
||||||
void OBFrame::frameGravity(int &x, int &y)
|
void OBFrame::frameGravity(int &x, int &y)
|
||||||
{
|
{
|
||||||
x = getRect().x();
|
x = rect().x();
|
||||||
y = getRect().y();
|
y = rect().y();
|
||||||
|
|
||||||
// horizontal
|
// horizontal
|
||||||
switch (_client->gravity()) {
|
switch (_client->gravity()) {
|
||||||
|
|
20
src/frame.hh
20
src/frame.hh
|
@ -113,25 +113,25 @@ public:
|
||||||
void frameGravity(int &x, int &y);
|
void frameGravity(int &x, int &y);
|
||||||
|
|
||||||
//! Gets the window id of the frame's "plate" subelement
|
//! Gets the window id of the frame's "plate" subelement
|
||||||
inline Window plate() const { return _plate.getWindow(); }
|
inline Window plate() const { return _plate.window(); }
|
||||||
//! Gets the window id of the frame's "titlebar" subelement
|
//! Gets the window id of the frame's "titlebar" subelement
|
||||||
inline Window titlebar() const { return _titlebar.getWindow(); }
|
inline Window titlebar() const { return _titlebar.window(); }
|
||||||
//! Gets the window id of the frame's "label" subelement
|
//! Gets the window id of the frame's "label" subelement
|
||||||
inline Window label() const { return _label.getWindow(); }
|
inline Window label() const { return _label.window(); }
|
||||||
//! Gets the window id of the frame's "close button" subelement
|
//! Gets the window id of the frame's "close button" subelement
|
||||||
inline Window button_close() const { return _button_close.getWindow(); }
|
inline Window button_close() const { return _button_close.window(); }
|
||||||
//! Gets the window id of the frame's "iconify button" subelement
|
//! Gets the window id of the frame's "iconify button" subelement
|
||||||
inline Window button_iconify() const { return _button_iconify.getWindow(); }
|
inline Window button_iconify() const { return _button_iconify.window(); }
|
||||||
//! Gets the window id of the frame's "maximize button" subelement
|
//! Gets the window id of the frame's "maximize button" subelement
|
||||||
inline Window button_max() const { return _button_max.getWindow(); }
|
inline Window button_max() const { return _button_max.window(); }
|
||||||
//! Gets the window id of the frame's "sticky button" subelement
|
//! Gets the window id of the frame's "sticky button" subelement
|
||||||
inline Window button_stick() const { return _button_stick.getWindow(); }
|
inline Window button_stick() const { return _button_stick.window(); }
|
||||||
//! Gets the window id of the frame's "handle" subelement
|
//! Gets the window id of the frame's "handle" subelement
|
||||||
inline Window handle() const { return _handle.getWindow(); }
|
inline Window handle() const { return _handle.window(); }
|
||||||
//! Gets the window id of the frame's "left grip" subelement
|
//! Gets the window id of the frame's "left grip" subelement
|
||||||
inline Window grip_left() const { return _grip_left.getWindow(); }
|
inline Window grip_left() const { return _grip_left.window(); }
|
||||||
//! Gets the window id of the frame's "right grip" subelement
|
//! Gets the window id of the frame's "right grip" subelement
|
||||||
inline Window grip_right() const { return _grip_right.getWindow(); }
|
inline Window grip_right() const { return _grip_right.window(); }
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
#include "client.hh"
|
#include "client.hh"
|
||||||
#include "screen.hh"
|
#include "screen.hh"
|
||||||
#include "actions.hh"
|
#include "actions.hh"
|
||||||
#include "python_client.hh"
|
|
||||||
#include "otk/property.hh"
|
#include "otk/property.hh"
|
||||||
#include "otk/display.hh"
|
#include "otk/display.hh"
|
||||||
#include "otk/assassin.hh"
|
#include "otk/assassin.hh"
|
||||||
|
@ -91,8 +90,8 @@ Openbox::Openbox(int argc, char **argv)
|
||||||
_doshutdown = false;
|
_doshutdown = false;
|
||||||
_rcfilepath = otk::expandTilde("~/.openbox/rc3");
|
_rcfilepath = otk::expandTilde("~/.openbox/rc3");
|
||||||
|
|
||||||
_pyclients = (PyDictObject*) PyDict_New();
|
_clients = (PyDictObject*) PyDict_New();
|
||||||
assert(_pyclients);
|
assert(_clients);
|
||||||
|
|
||||||
parseCommandLine(argc, argv);
|
parseCommandLine(argc, argv);
|
||||||
|
|
||||||
|
@ -276,35 +275,25 @@ void Openbox::eventLoop()
|
||||||
|
|
||||||
void Openbox::addClient(Window window, OBClient *client)
|
void Openbox::addClient(Window window, OBClient *client)
|
||||||
{
|
{
|
||||||
_clients[window] = client;
|
|
||||||
|
|
||||||
// maintain the python list here too
|
// maintain the python list here too
|
||||||
PyClientObject* pyclient = PyObject_New(PyClientObject, &PyClient_Type);
|
PyDict_SetItem((PyObject*)_clients, PyLong_FromLong(window),
|
||||||
pyclient->window = window;
|
(PyObject*)client);
|
||||||
pyclient->client = client;
|
|
||||||
PyDict_SetItem((PyObject*)_pyclients, PyLong_FromLong(window),
|
|
||||||
(PyObject*)pyclient);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Openbox::removeClient(Window window)
|
void Openbox::removeClient(Window window)
|
||||||
{
|
{
|
||||||
_clients.erase(window);
|
PyDict_DelItem((PyObject*)_clients, PyLong_FromLong(window));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
OBClient *Openbox::findClient(Window window)
|
OBClient *Openbox::findClient(Window window)
|
||||||
{
|
{
|
||||||
/*
|
PyClientObject *client = PyDist_GetItem((PyObject*)_clients,
|
||||||
NOTE: we dont use _clients[] to find the value because that will insert
|
PyLong_FromLong(window));
|
||||||
a new null into the hash, which really sucks when we want to clean up the
|
if (client)
|
||||||
hash at shutdown!
|
return client->client;
|
||||||
*/
|
return 0;
|
||||||
ClientMap::iterator it = _clients.find(window);
|
|
||||||
if (it != _clients.end())
|
|
||||||
return it->second;
|
|
||||||
else
|
|
||||||
return (OBClient*) 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,6 @@ extern "C" {
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <map>
|
|
||||||
|
|
||||||
#include "python.hh"
|
#include "python.hh"
|
||||||
#include "otk/screeninfo.hh"
|
#include "otk/screeninfo.hh"
|
||||||
|
@ -69,9 +68,6 @@ public:
|
||||||
Cursor ur_angle; //!< For resizing the right corner of a window
|
Cursor ur_angle; //!< For resizing the right corner of a window
|
||||||
};
|
};
|
||||||
|
|
||||||
//! A map for looking up a specific client class from the window id
|
|
||||||
typedef std::map<Window, OBClient *> ClientMap;
|
|
||||||
|
|
||||||
//! A list of OBScreen classes
|
//! A list of OBScreen classes
|
||||||
typedef std::vector<OBScreen *> ScreenList;
|
typedef std::vector<OBScreen *> ScreenList;
|
||||||
|
|
||||||
|
@ -93,8 +89,7 @@ private:
|
||||||
char *_argv0;
|
char *_argv0;
|
||||||
|
|
||||||
//! A list of all managed clients
|
//! A list of all managed clients
|
||||||
ClientMap _clients;
|
PyDictObject *_clients;
|
||||||
PyDictObject *_pyclients;
|
|
||||||
|
|
||||||
//! A list of all the managed screens
|
//! A list of all the managed screens
|
||||||
ScreenList _screens;
|
ScreenList _screens;
|
||||||
|
@ -171,7 +166,7 @@ public:
|
||||||
//! Returns the mouse cursors used throughout Openbox
|
//! Returns the mouse cursors used throughout Openbox
|
||||||
inline const Cursors &cursors() const { return _cursors; }
|
inline const Cursors &cursors() const { return _cursors; }
|
||||||
|
|
||||||
inline PyDictObject *pyclients() const { return _pyclients; }
|
inline PyDictObject *clients() const { return _clients; }
|
||||||
|
|
||||||
//! The main function of the Openbox class
|
//! The main function of the Openbox class
|
||||||
/*!
|
/*!
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "python.hh"
|
#include "python.hh"
|
||||||
#include "python_client.hh"
|
#include "client.hh"
|
||||||
#include "openbox.hh"
|
#include "openbox.hh"
|
||||||
|
|
||||||
namespace ob {
|
namespace ob {
|
||||||
|
@ -28,8 +28,8 @@ static PyMethodDef OBMethods[] = {
|
||||||
{"shit", shit, METH_VARARGS,
|
{"shit", shit, METH_VARARGS,
|
||||||
"Do some shit, yo!"},
|
"Do some shit, yo!"},
|
||||||
|
|
||||||
{"get_client_dict", get_client_dict, METH_VARARGS,
|
/* {"get_client_dict", get_client_dict, METH_VARARGS,
|
||||||
"Get the list of all clients"},
|
"Get the list of all clients"},*/
|
||||||
|
|
||||||
{NULL, NULL, 0, NULL}
|
{NULL, NULL, 0, NULL}
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,26 +11,17 @@ namespace ob {
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
||||||
PyObject *get_client_dict(PyObject* self, PyObject* args)
|
|
||||||
{
|
|
||||||
if (!PyArg_ParseTuple(args, ":get_client_dict"))
|
|
||||||
return NULL;
|
|
||||||
return PyDictProxy_New((PyObject*)Openbox::instance->pyclients());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
PyObject *getWindow(PyObject* self, PyObject* args)
|
PyObject *getWindow(PyObject* self, PyObject* args)
|
||||||
{
|
{
|
||||||
if (!PyArg_ParseTuple(args, ":getWindow"))
|
if (!PyArg_ParseTuple(args, ":getWindow"))
|
||||||
return NULL;
|
return NULL;
|
||||||
return PyLong_FromLong(((PyClientObject*)self)->window);
|
return PyLong_FromLong(((PyClientObject*)self)->client->window());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static PyMethodDef attr_methods[] = {
|
static PyMethodDef attr_methods[] = {
|
||||||
{"getWindow", getWindow, METH_VARARGS,
|
{"getWindow", (PyCFunction)getWindow, METH_VARARGS,
|
||||||
"Return the window id."},
|
"Return the window id."},
|
||||||
{NULL, NULL, 0, NULL} /* sentinel */
|
{NULL, NULL, 0, NULL} /* sentinel */
|
||||||
};
|
};
|
||||||
|
|
|
@ -17,7 +17,7 @@ OBRootWindow::OBRootWindow(int screen)
|
||||||
{
|
{
|
||||||
updateDesktopNames();
|
updateDesktopNames();
|
||||||
|
|
||||||
Openbox::instance->registerHandler(_info->getRootWindow(), this);
|
Openbox::instance->registerHandler(_info->rootWindow(), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ void OBRootWindow::updateDesktopNames()
|
||||||
|
|
||||||
unsigned long num = (unsigned) -1;
|
unsigned long num = (unsigned) -1;
|
||||||
|
|
||||||
if (!property->get(_info->getRootWindow(),
|
if (!property->get(_info->rootWindow(),
|
||||||
otk::OBProperty::net_desktop_names,
|
otk::OBProperty::net_desktop_names,
|
||||||
otk::OBProperty::utf8, &num, &_names))
|
otk::OBProperty::utf8, &num, &_names))
|
||||||
_names.clear();
|
_names.clear();
|
||||||
|
@ -88,7 +88,7 @@ void OBRootWindow::setDesktopName(int i, const std::string &name)
|
||||||
|
|
||||||
otk::OBProperty::StringVect newnames = _names;
|
otk::OBProperty::StringVect newnames = _names;
|
||||||
newnames[i] = name;
|
newnames[i] = name;
|
||||||
property->set(_info->getRootWindow(), otk::OBProperty::net_desktop_names,
|
property->set(_info->rootWindow(), otk::OBProperty::net_desktop_names,
|
||||||
otk::OBProperty::utf8, newnames);
|
otk::OBProperty::utf8, newnames);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,8 +104,7 @@ void OBRootWindow::mapRequestHandler(const XMapRequestEvent &e)
|
||||||
if (client) {
|
if (client) {
|
||||||
// XXX: uniconify and/or unshade the window
|
// XXX: uniconify and/or unshade the window
|
||||||
} else {
|
} else {
|
||||||
Openbox::instance->screen(_info->getScreenNumber())->
|
Openbox::instance->screen(_info->screen())->manageWindow(e.window);
|
||||||
manageWindow(e.window);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ OBScreen::OBScreen(int screen, const otk::Configuration &config)
|
||||||
|
|
||||||
::running = false;
|
::running = false;
|
||||||
XErrorHandler old = XSetErrorHandler(::anotherWMRunning);
|
XErrorHandler old = XSetErrorHandler(::anotherWMRunning);
|
||||||
XSelectInput(otk::OBDisplay::display, _info->getRootWindow(),
|
XSelectInput(otk::OBDisplay::display, _info->rootWindow(),
|
||||||
OBScreen::event_mask);
|
OBScreen::event_mask);
|
||||||
XSync(otk::OBDisplay::display, false);
|
XSync(otk::OBDisplay::display, false);
|
||||||
XSetErrorHandler(old);
|
XSetErrorHandler(old);
|
||||||
|
@ -54,15 +54,15 @@ OBScreen::OBScreen(int screen, const otk::Configuration &config)
|
||||||
if (! _managed) return; // was unable to manage the screen
|
if (! _managed) return; // was unable to manage the screen
|
||||||
|
|
||||||
printf(_("Managing screen %d: visual 0x%lx, depth %d\n"),
|
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::openbox_pid,
|
||||||
otk::OBProperty::Atom_Cardinal,
|
otk::OBProperty::Atom_Cardinal,
|
||||||
(unsigned long) getpid());
|
(unsigned long) getpid());
|
||||||
|
|
||||||
// set the mouse cursor for the root window (the default cursor)
|
// 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);
|
Openbox::instance->cursors().session);
|
||||||
|
|
||||||
// initialize the shit that is used for all drawing on the screen
|
// initialize the shit that is used for all drawing on the screen
|
||||||
|
@ -77,14 +77,14 @@ OBScreen::OBScreen(int screen, const otk::Configuration &config)
|
||||||
|
|
||||||
|
|
||||||
// Set the netwm atoms for geomtery and viewport
|
// Set the netwm atoms for geomtery and viewport
|
||||||
unsigned long geometry[] = { _info->getWidth(),
|
unsigned long geometry[] = { _info->width(),
|
||||||
_info->getHeight() };
|
_info->height() };
|
||||||
Openbox::instance->property()->set(_info->getRootWindow(),
|
Openbox::instance->property()->set(_info->rootWindow(),
|
||||||
otk::OBProperty::net_desktop_geometry,
|
otk::OBProperty::net_desktop_geometry,
|
||||||
otk::OBProperty::Atom_Cardinal,
|
otk::OBProperty::Atom_Cardinal,
|
||||||
geometry, 2);
|
geometry, 2);
|
||||||
unsigned long viewport[] = { 0, 0 };
|
unsigned long viewport[] = { 0, 0 };
|
||||||
Openbox::instance->property()->set(_info->getRootWindow(),
|
Openbox::instance->property()->set(_info->rootWindow(),
|
||||||
otk::OBProperty::net_desktop_viewport,
|
otk::OBProperty::net_desktop_viewport,
|
||||||
otk::OBProperty::Atom_Cardinal,
|
otk::OBProperty::Atom_Cardinal,
|
||||||
viewport, 2);
|
viewport, 2);
|
||||||
|
@ -112,7 +112,7 @@ void OBScreen::manageExisting()
|
||||||
{
|
{
|
||||||
unsigned int i, j, nchild;
|
unsigned int i, j, nchild;
|
||||||
Window r, p, *children;
|
Window r, p, *children;
|
||||||
XQueryTree(otk::OBDisplay::display, _info->getRootWindow(), &r, &p,
|
XQueryTree(otk::OBDisplay::display, _info->rootWindow(), &r, &p,
|
||||||
&children, &nchild);
|
&children, &nchild);
|
||||||
|
|
||||||
// preen the window list of all icon windows... for better dockapp support
|
// preen the window list of all icon windows... for better dockapp support
|
||||||
|
@ -205,8 +205,8 @@ void OBScreen::calcArea()
|
||||||
}
|
}
|
||||||
|
|
||||||
_area.setRect(current_left, current_top,
|
_area.setRect(current_left, current_top,
|
||||||
_info->getWidth() - (current_left + current_right),
|
_info->width() - (current_left + current_right),
|
||||||
_info->getHeight() - (current_top + current_bottom));
|
_info->height() - (current_top + current_bottom));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
#ifdef XINERAMA
|
#ifdef XINERAMA
|
||||||
|
@ -255,7 +255,7 @@ void OBScreen::setClientList()
|
||||||
} else
|
} else
|
||||||
windows = (Window*) 0;
|
windows = (Window*) 0;
|
||||||
|
|
||||||
Openbox::instance->property()->set(_info->getRootWindow(),
|
Openbox::instance->property()->set(_info->rootWindow(),
|
||||||
otk::OBProperty::net_client_list,
|
otk::OBProperty::net_client_list,
|
||||||
otk::OBProperty::Atom_Window,
|
otk::OBProperty::Atom_Window,
|
||||||
windows, _clients.size());
|
windows, _clients.size());
|
||||||
|
@ -288,7 +288,7 @@ void OBScreen::setStackingList()
|
||||||
void OBScreen::setWorkArea() {
|
void OBScreen::setWorkArea() {
|
||||||
unsigned long area[] = { _area.x(), _area.y(),
|
unsigned long area[] = { _area.x(), _area.y(),
|
||||||
_area.width(), _area.height() };
|
_area.width(), _area.height() };
|
||||||
Openbox::instance->property()->set(_info->getRootWindow(),
|
Openbox::instance->property()->set(_info->rootWindow(),
|
||||||
otk::OBProperty::net_workarea,
|
otk::OBProperty::net_workarea,
|
||||||
otk::OBProperty::Atom_Cardinal,
|
otk::OBProperty::Atom_Cardinal,
|
||||||
area, 4);
|
area, 4);
|
||||||
|
@ -369,7 +369,7 @@ void OBScreen::manageWindow(Window window)
|
||||||
client->frame = new OBFrame(client, &_style);
|
client->frame = new OBFrame(client, &_style);
|
||||||
|
|
||||||
// add to the wm's map
|
// 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->plate(), client);
|
||||||
Openbox::instance->addClient(client->frame->titlebar(), client);
|
Openbox::instance->addClient(client->frame->titlebar(), client);
|
||||||
Openbox::instance->addClient(client->frame->label(), client);
|
Openbox::instance->addClient(client->frame->label(), client);
|
||||||
|
@ -403,7 +403,7 @@ void OBScreen::unmanageWindow(OBClient *client)
|
||||||
|
|
||||||
// remove from the wm's map
|
// remove from the wm's map
|
||||||
Openbox::instance->removeClient(client->window());
|
Openbox::instance->removeClient(client->window());
|
||||||
Openbox::instance->removeClient(frame->getWindow());
|
Openbox::instance->removeClient(frame->window());
|
||||||
Openbox::instance->removeClient(frame->plate());
|
Openbox::instance->removeClient(frame->plate());
|
||||||
Openbox::instance->removeClient(frame->titlebar());
|
Openbox::instance->removeClient(frame->titlebar());
|
||||||
Openbox::instance->removeClient(frame->label());
|
Openbox::instance->removeClient(frame->label());
|
||||||
|
|
Loading…
Reference in a new issue