summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am2
-rw-r--r--src/openbox.i27
-rw-r--r--src/screen.cc20
-rw-r--r--src/screen.hh8
4 files changed, 35 insertions, 22 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 92e0b3b0..3a4f9865 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -29,7 +29,7 @@ openbox.i: openbox.hh screen.hh client.hh
touch openbox.i
openbox_wrap.cc: openbox.i
- swig -python -c++ -nodefault -module openbox -o openbox_wrap.cc openbox.i
+ swig -python -c++ -nodefault -o openbox_wrap.cc openbox.i
# swig -guile -c++ -nodefault -o openbox_wrap.cc openbox.i
# local dependencies
diff --git a/src/openbox.i b/src/openbox.i
index bde9a8cb..cf7859d4 100644
--- a/src/openbox.i
+++ b/src/openbox.i
@@ -12,17 +12,32 @@
#include "client.hh"
%}
-%immutable ob::Openbox::instance;
+%include stl.i
+//%include std_list.i
+//%template(ClientList) std::list<OBClient*>;
+
+
+%ignore ob::Openbox::instance;
+%ignore ob::OBScreen::clients;
%include "openbox.hh"
%include "screen.hh"
%include "client.hh"
-
-%include stl.i
-%include std_list.i
+%inline %{
+ ob::Openbox *Openbox_instance() { return ob::Openbox::instance; }
+%};
%{
-class OBClient;
+ #include <iterator>
%}
-%template(ClientList) std::list<OBClient*>;
+%extend ob::OBScreen {
+ OBClient *client(int i) {
+ ob::OBScreen::ClientList::iterator it = self->clients.begin();
+ std::advance(it,i);
+ return *it;
+ }
+ int clientCount() const {
+ return (int) self->clients.size();
+ }
+};
diff --git a/src/screen.cc b/src/screen.cc
index 18c63327..947471c2 100644
--- a/src/screen.cc
+++ b/src/screen.cc
@@ -101,8 +101,8 @@ OBScreen::~OBScreen()
if (! _managed) return;
// unmanage all windows
- while (!_clients.empty())
- unmanageWindow(_clients.front());
+ while (!clients.empty())
+ unmanageWindow(clients.front());
delete _image_control;
}
@@ -243,13 +243,13 @@ void OBScreen::setClientList()
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
@@ -258,9 +258,9 @@ void OBScreen::setClientList()
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();
@@ -389,7 +389,7 @@ void OBScreen::manageWindow(Window window)
otk::OBDisplay::ungrab();
// add to the screen's list
- _clients.push_back(client);
+ clients.push_back(client);
// update the root properties
setClientList();
}
@@ -432,7 +432,7 @@ void OBScreen::unmanageWindow(OBClient *client)
client->frame = 0;
// remove from the screen's list
- _clients.remove(client);
+ clients.remove(client);
delete client;
// update the root properties
diff --git a/src/screen.hh b/src/screen.hh
index a35e4ca0..7e95d40f 100644
--- a/src/screen.hh
+++ b/src/screen.hh
@@ -43,6 +43,9 @@ public:
ButtonPressMask |
ButtonReleaseMask;
+ //! All managed clients on the screen
+ ClientList clients;
+
private:
//! Was %Openbox able to manage the screen?
bool _managed;
@@ -64,9 +67,6 @@ private:
//! Is the root colormap currently installed?
bool _root_cmap_installed;
- //! All managed clients on the screen
- ClientList _clients;
-
//! Area usable for placement etc (total - struts)
otk::Rect _area;
@@ -114,8 +114,6 @@ public:
//! Returns the style in use on the screen
inline const otk::Style *style() const { return &_style; }
- inline ClientList clients() { return _clients; }
-
//! Adds a window's strut to the screen's list of reserved spaces
void addStrut(otk::Strut *strut);
//! Removes a window's strut from the screen's list of reserved spaces