all repos — openbox @ 0820c5100d7ea8daed00e7b1bf183edc9414728f

openbox fork - make it a bit more like ryudo

make rect a proper pyobject. use "typesafety"
Dana Jansens danakj@orodu.net
commit

0820c5100d7ea8daed00e7b1bf183edc9414728f

parent

9e4d1bbabcabef13b740dd7201e35c3314abfbee

5 files changed, 20 insertions(+), 17 deletions(-)

jump to
M otk_c/display.cotk_c/display.c

@@ -123,9 +123,9 @@ // set the global var, for the new screeninfo's

OBDisplay = self; // Get information on all the screens which are available. - self->screenInfoList = PyList_New(ScreenCount(self->display)); + self->screenInfoList = (PyListObject*)PyList_New(ScreenCount(self->display)); for (i = 0; i < ScreenCount(self->display); ++i) - PyList_SetItem(self->screenInfoList, i, OtkScreenInfo_New(i)); + PyList_SetItem((PyObject*)self->screenInfoList, i, OtkScreenInfo_New(i)); Py_INCREF(OBDisplay); // make sure it stays around!! }

@@ -148,7 +148,7 @@ }

OtkScreenInfo *OtkDisplay_ScreenInfo(OtkDisplay *self, int num) { - PyObject *py = PyList_GetItem(self->screenInfoList, num); + PyObject *py = PyList_GetItem((PyObject*)self->screenInfoList, num); return (OtkScreenInfo*) py; }
M otk_c/display.hotk_c/display.h

@@ -35,7 +35,7 @@ //! The number of requested grabs on the display

int grab_count; //! A list of information for all screens on the display - PyObject *screenInfoList; // PyListObject + PyListObject *screenInfoList; } OtkDisplay; //! Opens the X display, and sets the global OBDisplay variable
M otk_c/rect.hotk_c/rect.h

@@ -4,7 +4,8 @@ #define __rect_h

#include <Python.h> -typedef struct { +typedef struct OtkRect { + PyObject_HEAD int x, y, width, height; } OtkRect;
M otk_c/screeninfo.cotk_c/screeninfo.c

@@ -25,11 +25,11 @@ self = PyObject_New(OtkScreenInfo, &OtkScreenInfo_Type);

self->screen = num; self->root_window = RootWindow(OBDisplay->display, self->screen); - self->rect = OtkRect_New(0, 0, - WidthOfScreen(ScreenOfDisplay(OBDisplay->display, - self->screen)), - HeightOfScreen(ScreenOfDisplay(OBDisplay->display, - self->screen))); + self->rect = (OtkRect*) + OtkRect_New(0, 0, WidthOfScreen(ScreenOfDisplay(OBDisplay->display, + self->screen)), + HeightOfScreen(ScreenOfDisplay(OBDisplay->display, + self->screen))); /* If the default depth is at least 8 we will use that,

@@ -78,16 +78,16 @@ XFree(vinfo_return);

} // get the default display string and strip the screen number - self->display_string = + self->display_string = (PyStringObject*) PyString_FromFormat("DISPLAY=%s",DisplayString(OBDisplay->display)); - dstr = PyString_AsString(self->display_string); + dstr = PyString_AsString((PyObject*)self->display_string); dstr2 = strrchr(dstr, '.'); if (dstr2) { PyObject *str; - _PyString_Resize(&self->display_string, dstr2 - dstr); + _PyString_Resize((PyObject**)&self->display_string, dstr2 - dstr); str = PyString_FromFormat(".%d", self->screen); - PyString_Concat(&self->display_string, str); + PyString_Concat((PyObject**)&self->display_string, str); } #ifdef XINERAMA

@@ -142,7 +142,7 @@ return NULL;

return PyInt_FromLong(self->screen); } -static PyObject *otkscreeninfo_getrect(OtkScreenInfo* self, PyObject* args) +static OtkRect *otkscreeninfo_getrect(OtkScreenInfo* self, PyObject* args) { if (!PyArg_ParseTuple(args, ":getRect")) return NULL;
M otk_c/screeninfo.hotk_c/screeninfo.h

@@ -7,6 +7,8 @@ #include <Python.h>

extern PyTypeObject OtkScreenInfo_Type; +struct OtkRect; + typedef struct OtkScreenInfo { int screen; Window root_window;

@@ -15,8 +17,8 @@ int depth;

Visual *visual; Colormap colormap; - PyObject *display_string; // PyStringObject - PyObject *rect; // OtkRect + PyStringObject *display_string; + struct OtkRect *rect; // OtkRect #ifdef XINERAMA PyObject *xinerama_areas; // PyListObject[OtkRect] Bool xinerama_active;