all repos — openbox @ dd6f90684899e8e26e653af4b2e7e7eab1abf798

openbox fork - make it a bit more like ryudo

compiles with the new render subsystem...
Dana Jansens danakj@orodu.net
commit

dd6f90684899e8e26e653af4b2e7e7eab1abf798

parent

17d63184998b747e1a0554dc4364a36238b039e1

M otk/otk.hhotk/otk.hh

@@ -13,21 +13,21 @@ #include "appwidget.hh"

#include "application.hh" #include "assassin.hh" #include "button.hh" -#include "color.hh" +#include "rendercolor.hh" #include "configuration.hh" #include "display.hh" #include "font.hh" -#include "gccache.hh" -#include "image.hh" +//#include "gccache.hh" +#include "rendercontrol.hh" #include "label.hh" #include "point.hh" #include "property.hh" #include "rect.hh" #include "screeninfo.hh" #include "strut.hh" -#include "style.hh" +#include "renderstyle.hh" #include "surface.hh" -#include "texture.hh" +#include "rendertexture.hh" #include "timer.hh" #include "util.hh" #include "ustring.hh"
M src/backgroundwidget.ccsrc/backgroundwidget.cc

@@ -26,21 +26,21 @@ {

switch (type()) { case Type_Titlebar: if (_focused) - setTexture(_style->getTitleFocus()); + setTexture(_style->titlebarFocusBackground()); else - setTexture(_style->getTitleUnfocus()); + setTexture(_style->titlebarUnfocusBackground()); break; case Type_Handle: if (_focused) - setTexture(_style->getHandleFocus()); + setTexture(_style->handleFocusBackground()); else - setTexture(_style->getHandleUnfocus()); + setTexture(_style->handleUnfocusBackground()); break; case Type_Plate: if (_focused) - setBorderColor(&_style->getFrameFocus()->color()); + setBorderColor(_style->clientBorderFocusColor()); else - setBorderColor(&_style->getFrameUnfocus()->color()); + setBorderColor(_style->clientBorderUnfocusColor()); break; default: assert(false); // there's no other background widgets!

@@ -48,14 +48,14 @@ }

} -void BackgroundWidget::setStyle(otk::Style *style) +void BackgroundWidget::setStyle(otk::RenderStyle *style) { Widget::setStyle(style); setTextures(); switch (type()) { case Type_Titlebar: case Type_Handle: - setBorderColor(_style->getBorderColor()); + setBorderColor(_style->frameBorderColor()); break; case Type_Plate: break;
M src/backgroundwidget.hhsrc/backgroundwidget.hh

@@ -16,7 +16,7 @@ public:

BackgroundWidget(otk::Widget *parent, WidgetBase::WidgetType type); virtual ~BackgroundWidget(); - virtual void setStyle(otk::Style *style); + virtual void setStyle(otk::RenderStyle *style); virtual void adjust();
M src/buttonwidget.ccsrc/buttonwidget.cc

@@ -30,9 +30,9 @@ switch (type()) {

case Type_LeftGrip: case Type_RightGrip: if (_focused) - setTexture(_style->getGripFocus()); + setTexture(_style->gripFocusBackground()); else - setTexture(_style->getGripUnfocus()); + setTexture(_style->gripUnfocusBackground()); break; case Type_StickyButton: case Type_CloseButton:

@@ -40,14 +40,14 @@ case Type_MaximizeButton:

case Type_IconifyButton: if (_pressed) { if (_focused) - setTexture(_style->getButtonPressedFocus()); + setTexture(_style->buttonPressFocusBackground()); else - setTexture(_style->getButtonPressedUnfocus()); + setTexture(_style->buttonPressUnfocusBackground()); } else { if (_focused) - setTexture(_style->getButtonFocus()); + setTexture(_style->buttonUnpressFocusBackground()); else - setTexture(_style->getButtonUnfocus()); + setTexture(_style->buttonUnpressUnfocusBackground()); } break; default:

@@ -56,7 +56,7 @@ }

} -void ButtonWidget::setStyle(otk::Style *style) +void ButtonWidget::setStyle(otk::RenderStyle *style) { otk::Widget::setStyle(style); setTextures();

@@ -64,7 +64,7 @@

switch (type()) { case Type_LeftGrip: case Type_RightGrip: - setBorderColor(_style->getBorderColor()); + setBorderColor(_style->frameBorderColor()); break; case Type_StickyButton: case Type_CloseButton:

@@ -79,25 +79,30 @@

void ButtonWidget::update() { + printf("ButtonWidget::update()\n"); +} + +void ButtonWidget::renderForeground() +{ otk::PixmapMask *pm; int width; bool draw = _dirty; - otk::Widget::update(); + otk::Widget::renderForeground(); if (draw) { switch (type()) { case Type_StickyButton: - pm = _style->getStickyButtonMask(); + pm = _style->stickyMask(); break; case Type_CloseButton: - pm = _style->getCloseButtonMask(); + pm = _style->closeMask(); break; case Type_MaximizeButton: - pm = _style->getMaximizeButtonMask(); + pm = _style->maximizeMask(); break; case Type_IconifyButton: - pm = _style->getIconifyButtonMask(); + pm = _style->iconifyMask(); break; case Type_LeftGrip: case Type_RightGrip:

@@ -109,23 +114,23 @@

if (pm->mask == None) return; // no mask for the button, leave it empty width = _rect.width(); - - otk::Pen pen(_focused ? *_style->getButtonPicFocus() : - *_style->getButtonPicUnfocus()); + + otk::RenderColor *color = (_focused ? _style->buttonFocusColor() : + _style->buttonUnfocusColor()); // set the clip region - XSetClipMask(**otk::display, pen.gc(), pm->mask); - XSetClipOrigin(**otk::display, pen.gc(), + XSetClipMask(**otk::display, color->gc(), pm->mask); + XSetClipOrigin(**otk::display, color->gc(), (width - pm->w)/2, (width - pm->h)/2); // fill in the clipped region - XFillRectangle(**otk::display, _window, pen.gc(), + XFillRectangle(**otk::display, _window, color->gc(), (width - pm->w)/2, (width - pm->h)/2, (width + pm->w)/2, (width + pm->h)/2); // unset the clip region - XSetClipMask(**otk::display, pen.gc(), None); - XSetClipOrigin(**otk::display, pen.gc(), 0, 0); + XSetClipMask(**otk::display, color->gc(), None); + XSetClipOrigin(**otk::display, color->gc(), 0, 0); } }
M src/buttonwidget.hhsrc/buttonwidget.hh

@@ -18,11 +18,12 @@ public:

ButtonWidget(otk::Widget *parent, WidgetBase::WidgetType type); virtual ~ButtonWidget(); - virtual void setStyle(otk::Style *style); + virtual void setStyle(otk::RenderStyle *style); virtual void adjust(); virtual void update(); + virtual void renderForeground(); virtual void focus(); virtual void unfocus();
M src/frame.ccsrc/frame.cc

@@ -23,7 +23,7 @@ namespace ob {

const long Frame::event_mask; -Frame::Frame(Client *client, otk::Style *style) +Frame::Frame(Client *client, otk::RenderStyle *style) : otk::Widget(openbox, style, Horizontal, 0, 1, true), WidgetBase(WidgetBase::Type_Frame), _client(client),

@@ -71,7 +71,7 @@ _label.update();

} -void Frame::setStyle(otk::Style *style) +void Frame::setStyle(otk::RenderStyle *style) { assert(style);

@@ -87,7 +87,7 @@ }

_style = style; - setBorderColor(_style->getBorderColor()); + setBorderColor(_style->frameBorderColor()); // if !replace, then adjust() will get called after the client is grabbed! if (replace) {

@@ -129,11 +129,11 @@ int width; // the width of the client and its border

int bwidth; // width to make borders int cbwidth; // width of the inner client border int butsize=0; // width and height of the titlebar buttons - const int bevel = _style->getBevelWidth(); + const int bevel = _style->bevelWidth(); if (_decorations & Client::Decor_Border) { - bwidth = _style->getBorderWidth(); - cbwidth = _style->getFrameWidth(); + bwidth = _style->frameBorderWidth(); + cbwidth = _style->clientBorderWidth(); } else bwidth = cbwidth = 0; _innersize.left = _innersize.top = _innersize.bottom = _innersize.right =

@@ -153,11 +153,11 @@ // set the titlebar size

_titlebar.setGeometry(-bwidth, -bwidth, width, - _style->getFont()->height() + bevel * 2); + _style->labelFont()->height() + bevel * 2); _innersize.top += _titlebar.height() + bwidth; // set the label size - _label.setGeometry(0, bevel, width, _style->getFont()->height()); + _label.setGeometry(0, bevel, width, _style->labelFont()->height()); // set the buttons sizes butsize = _label.height() - 2; if (_decorations & Client::Decor_Iconify)

@@ -275,7 +275,7 @@

if (_decorations & Client::Decor_Handle) { _handle.setGeometry(-bwidth, _innersize.top + _client->area().height() + cbwidth, - width, _style->getHandleWidth()); + width, _style->handleWidth()); _grip_left.setGeometry(-bwidth, -bwidth, // XXX: get a Point class in otk and use that for

@@ -357,7 +357,7 @@ void Frame::adjustShape()

{ #ifdef SHAPE int bwidth = (_decorations & Client::Decor_Border) ? - _style->getBorderWidth() : 0; + _style->frameBorderWidth() : 0; if (!_client->shaped()) { // clear the shape on the frame window
M src/frame.hhsrc/frame.hh

@@ -16,7 +16,7 @@ #include "buttonwidget.hh"

#include "otk/strut.hh" #include "otk/rect.hh" #include "otk/screeninfo.hh" -#include "otk/style.hh" +#include "otk/renderstyle.hh" #include "otk/widget.hh" #include "otk/ustring.hh"

@@ -71,7 +71,7 @@ /*!

@param client The client window which will be decorated by the new Frame @param style The style to use to decorate the frame */ - Frame(Client *client, otk::Style *style); + Frame(Client *client, otk::RenderStyle *style); //! Destroys the Frame object virtual ~Frame();

@@ -79,7 +79,7 @@ //! Returns the size of the frame on each side of the client

const otk::Strut& size() const { return _size; } //! Set the style to decorate the frame with - virtual void setStyle(otk::Style *style); + virtual void setStyle(otk::RenderStyle *style); //! Empty overridden method to prevent automatic alignment of children virtual void adjust();
M src/labelwidget.ccsrc/labelwidget.cc

@@ -14,15 +14,11 @@ LabelWidget::LabelWidget(otk::Widget *parent, WidgetBase::WidgetType type)

: otk::Widget(parent), WidgetBase(type) { - const otk::ScreenInfo *info = otk::display->screenInfo(_screen); - _xftdraw = XftDrawCreate(**otk::display, _window, info->visual(), - info->colormap()); } LabelWidget::~LabelWidget() { - XftDrawDestroy(_xftdraw); }

@@ -36,23 +32,24 @@

void LabelWidget::setTextures() { if (_focused) { - setTexture(_style->getLabelFocus()); - _text_color = _style->getTextFocus(); + setTexture(_style->labelFocusBackground()); + _text_color = _style->textFocusColor(); } else { - setTexture(_style->getLabelUnfocus()); - _text_color = _style->getTextUnfocus(); + setTexture(_style->labelUnfocusBackground()); + _text_color = _style->textUnfocusColor(); } } -void LabelWidget::setStyle(otk::Style *style) +void LabelWidget::setStyle(otk::RenderStyle *style) { otk::Widget::setStyle(style); setTextures(); - _font = style->getFont(); + _font = style->labelFont(); + _sidemargin = style->bevelWidth() * 2; + _justify = style->labelTextJustify(); + assert(_font); - _sidemargin = style->getBevelWidth() * 2; - _justify = style->textJustify(); }

@@ -72,9 +69,15 @@

void LabelWidget::update() { + printf("LabelWidget::update()\n"); +} + + +void LabelWidget::renderForeground() +{ bool draw = _dirty; - otk::Widget::update(); + otk::Widget::renderForeground(); if (draw) { otk::ustring t = _text;

@@ -95,18 +98,19 @@ } while (length > max_length && text_len-- > 0);

// justify the text switch (_justify) { - case otk::Style::RightJustify: + case otk::RenderStyle::RightJustify: x += max_length - length; break; - case otk::Style::CenterJustify: + case otk::RenderStyle::CenterJustify: x += (max_length - length) / 2; break; - case otk::Style::LeftJustify: + case otk::RenderStyle::LeftJustify: break; } } - _font->drawString(_xftdraw, x, 0, *_text_color, t); + otk::display->renderControl(_screen)->drawString + (*_surface, *_font, x, 0, *_text_color, t); } }
M src/labelwidget.hhsrc/labelwidget.hh

@@ -5,7 +5,7 @@

#include "widgetbase.hh" #include "otk/widget.hh" #include "otk/font.hh" -#include "otk/style.hh" +#include "otk/renderstyle.hh" #include "otk/ustring.hh" namespace ob {

@@ -15,18 +15,16 @@ {

private: void setTextures(); const otk::Font *_font; - otk::Color *_text_color; + otk::RenderColor *_text_color; int _sidemargin; - otk::Style::TextJustify _justify; + otk::RenderStyle::TextJustify _justify; otk::ustring _text; - //! Object used by Xft to render to the drawable - XftDraw *_xftdraw; public: LabelWidget(otk::Widget *parent, WidgetBase::WidgetType type); virtual ~LabelWidget(); - virtual void setStyle(otk::Style *style); + virtual void setStyle(otk::RenderStyle *style); virtual void adjust();

@@ -34,6 +32,8 @@ virtual void focus();

virtual void unfocus(); virtual void update(); + + virtual void renderForeground(); inline const otk::ustring &text() const { return _text; } void setText(const otk::ustring &text);
M src/openbox.pysrc/openbox.py

@@ -48,6 +48,7 @@ except: pass

def gcCache(*args): return apply(_openbox.Display_gcCache,args) def screenInfo(*args): return apply(_openbox.Display_screenInfo,args) def findScreen(*args): return apply(_openbox.Display_findScreen,args) + def renderControl(*args): return apply(_openbox.Display_renderControl,args) def xkb(*args): return apply(_openbox.Display_xkb,args) def xkbEventBase(*args): return apply(_openbox.Display_xkbEventBase,args) def shape(*args): return apply(_openbox.Display_shape,args)

@@ -664,7 +665,6 @@ def clientCount(*args): return apply(_openbox.Screen_clientCount,args)

event_mask = _openbox.Screen_event_mask def number(*args): return apply(_openbox.Screen_number,args) def managed(*args): return apply(_openbox.Screen_managed,args) - def imageControl(*args): return apply(_openbox.Screen_imageControl,args) def area(*args): return apply(_openbox.Screen_area,args) def style(*args): return apply(_openbox.Screen_style,args) def focuswindow(*args): return apply(_openbox.Screen_focuswindow,args)
M src/openbox_wrap.ccsrc/openbox_wrap.cc

@@ -668,7 +668,7 @@ #define SWIGTYPE_p_XVisibilityEvent swig_types[19]

#define SWIGTYPE_p_XPropertyEvent swig_types[20] #define SWIGTYPE_p_XSelectionRequestEvent swig_types[21] #define SWIGTYPE_p_ob__Cursors swig_types[22] -#define SWIGTYPE_p_otk__ImageControl swig_types[23] +#define SWIGTYPE_p_otk__RenderControl swig_types[23] #define SWIGTYPE_p_ob__MwmHints swig_types[24] #define SWIGTYPE_p_ob__Screen swig_types[25] #define SWIGTYPE_p_ob__Frame swig_types[26]

@@ -682,19 +682,19 @@ #define SWIGTYPE_p_XCrossingEvent swig_types[33]

#define SWIGTYPE_p_otk__Display swig_types[34] #define SWIGTYPE_p_Display swig_types[35] #define SWIGTYPE_p_XMappingEvent swig_types[36] -#define SWIGTYPE_p_otk__Style swig_types[37] -#define SWIGTYPE_p_otk__EventHandler swig_types[38] -#define SWIGTYPE_p_XReparentEvent swig_types[39] -#define SWIGTYPE_p_otk__EventDispatcher swig_types[40] -#define SWIGTYPE_p_otk__GCCache swig_types[41] -#define SWIGTYPE_p_ob__Bindings swig_types[42] -#define SWIGTYPE_p_ob__Openbox swig_types[43] -#define SWIGTYPE_p_ob__Actions swig_types[44] -#define SWIGTYPE_p_otk__Widget swig_types[45] -#define SWIGTYPE_p_XEvent swig_types[46] -#define SWIGTYPE_p_otk__Property swig_types[47] -#define SWIGTYPE_p_PyObject swig_types[48] -#define SWIGTYPE_p_otk__ScreenInfo swig_types[49] +#define SWIGTYPE_p_otk__EventHandler swig_types[37] +#define SWIGTYPE_p_XReparentEvent swig_types[38] +#define SWIGTYPE_p_otk__EventDispatcher swig_types[39] +#define SWIGTYPE_p_otk__GCCache swig_types[40] +#define SWIGTYPE_p_ob__Bindings swig_types[41] +#define SWIGTYPE_p_ob__Openbox swig_types[42] +#define SWIGTYPE_p_ob__Actions swig_types[43] +#define SWIGTYPE_p_otk__Widget swig_types[44] +#define SWIGTYPE_p_XEvent swig_types[45] +#define SWIGTYPE_p_otk__Property swig_types[46] +#define SWIGTYPE_p_PyObject swig_types[47] +#define SWIGTYPE_p_otk__ScreenInfo swig_types[48] +#define SWIGTYPE_p_otk__RenderStyle swig_types[49] #define SWIGTYPE_p_ob__EventData swig_types[50] #define SWIGTYPE_p_XCreateWindowEvent swig_types[51] #define SWIGTYPE_p_XDestroyWindowEvent swig_types[52]

@@ -704,8 +704,8 @@ #define SWIGTYPE_p_otk__Atoms swig_types[55]

#define SWIGTYPE_p_XKeyEvent swig_types[56] #define SWIGTYPE_p_int swig_types[57] #define SWIGTYPE_p_otk__Strut swig_types[58] -#define SWIGTYPE_p_unsigned_long swig_types[59] -#define SWIGTYPE_p_p_unsigned_long swig_types[60] +#define SWIGTYPE_p_p_unsigned_long swig_types[59] +#define SWIGTYPE_p_unsigned_long swig_types[60] #define SWIGTYPE_p_XMotionEvent swig_types[61] #define SWIGTYPE_p_XButtonEvent swig_types[62] #define SWIGTYPE_p_XSelectionEvent swig_types[63]

@@ -1032,6 +1032,24 @@ if (PyErr_Occurred()) SWIG_fail;

result = (otk::ScreenInfo *)(arg1)->findScreen(arg2); resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_otk__ScreenInfo, 0); + return resultobj; + fail: + return NULL; +} + + +static PyObject *_wrap_Display_renderControl(PyObject *self, PyObject *args) { + PyObject *resultobj; + otk::Display *arg1 = (otk::Display *) 0 ; + int arg2 ; + otk::RenderControl *result; + PyObject * obj0 = 0 ; + + if(!PyArg_ParseTuple(args,(char *)"Oi:Display_renderControl",&obj0,&arg2)) goto fail; + if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_otk__Display,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail; + result = (otk::RenderControl *)(arg1)->renderControl(arg2); + + resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_otk__RenderControl, 0); return resultobj; fail: return NULL;

@@ -8271,23 +8289,6 @@ return NULL;

} -static PyObject *_wrap_Screen_imageControl(PyObject *self, PyObject *args) { - PyObject *resultobj; - ob::Screen *arg1 = (ob::Screen *) 0 ; - otk::ImageControl *result; - PyObject * obj0 = 0 ; - - if(!PyArg_ParseTuple(args,(char *)"O:Screen_imageControl",&obj0)) goto fail; - if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_ob__Screen,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail; - result = (otk::ImageControl *)(arg1)->imageControl(); - - resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_otk__ImageControl, 0); - return resultobj; - fail: - return NULL; -} - - static PyObject *_wrap_Screen_area(PyObject *self, PyObject *args) { PyObject *resultobj; ob::Screen *arg1 = (ob::Screen *) 0 ;

@@ -8311,14 +8312,14 @@

static PyObject *_wrap_Screen_style(PyObject *self, PyObject *args) { PyObject *resultobj; ob::Screen *arg1 = (ob::Screen *) 0 ; - otk::Style *result; + otk::RenderStyle *result; PyObject * obj0 = 0 ; if(!PyArg_ParseTuple(args,(char *)"O:Screen_style",&obj0)) goto fail; if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_ob__Screen,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail; - result = (otk::Style *)((ob::Screen const *)arg1)->style(); + result = (otk::RenderStyle *)((ob::Screen const *)arg1)->style(); - resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_otk__Style, 0); + resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_otk__RenderStyle, 0); return resultobj; fail: return NULL;

@@ -9573,14 +9574,14 @@ }

static PyObject *_wrap_new_Frame(PyObject *self, PyObject *args) { PyObject *resultobj; ob::Client *arg1 = (ob::Client *) 0 ; - otk::Style *arg2 = (otk::Style *) 0 ; + otk::RenderStyle *arg2 = (otk::RenderStyle *) 0 ; ob::Frame *result; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if(!PyArg_ParseTuple(args,(char *)"OO:new_Frame",&obj0,&obj1)) goto fail; if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_ob__Client,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail; - if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_otk__Style,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail; + if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_otk__RenderStyle,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail; result = (ob::Frame *)new ob::Frame(arg1,arg2); resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_ob__Frame, 1);

@@ -9629,13 +9630,13 @@

static PyObject *_wrap_Frame_setStyle(PyObject *self, PyObject *args) { PyObject *resultobj; ob::Frame *arg1 = (ob::Frame *) 0 ; - otk::Style *arg2 = (otk::Style *) 0 ; + otk::RenderStyle *arg2 = (otk::RenderStyle *) 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if(!PyArg_ParseTuple(args,(char *)"OO:Frame_setStyle",&obj0,&obj1)) goto fail; if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_ob__Frame,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail; - if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_otk__Style,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail; + if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_otk__RenderStyle,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail; (arg1)->setStyle(arg2); Py_INCREF(Py_None); resultobj = Py_None;

@@ -11297,6 +11298,7 @@ { (char *)"delete_Display", _wrap_delete_Display, METH_VARARGS },

{ (char *)"Display_gcCache", _wrap_Display_gcCache, METH_VARARGS }, { (char *)"Display_screenInfo", _wrap_Display_screenInfo, METH_VARARGS }, { (char *)"Display_findScreen", _wrap_Display_findScreen, METH_VARARGS }, + { (char *)"Display_renderControl", _wrap_Display_renderControl, METH_VARARGS }, { (char *)"Display_xkb", _wrap_Display_xkb, METH_VARARGS }, { (char *)"Display_xkbEventBase", _wrap_Display_xkbEventBase, METH_VARARGS }, { (char *)"Display_shape", _wrap_Display_shape, METH_VARARGS },

@@ -11614,7 +11616,6 @@ { (char *)"Screen_client", _wrap_Screen_client, METH_VARARGS },

{ (char *)"Screen_clientCount", _wrap_Screen_clientCount, METH_VARARGS }, { (char *)"Screen_number", _wrap_Screen_number, METH_VARARGS }, { (char *)"Screen_managed", _wrap_Screen_managed, METH_VARARGS }, - { (char *)"Screen_imageControl", _wrap_Screen_imageControl, METH_VARARGS }, { (char *)"Screen_area", _wrap_Screen_area, METH_VARARGS }, { (char *)"Screen_style", _wrap_Screen_style, METH_VARARGS }, { (char *)"Screen_focuswindow", _wrap_Screen_focuswindow, METH_VARARGS },

@@ -11832,7 +11833,7 @@ static swig_type_info _swigt__p_XVisibilityEvent[] = {{"_p_XVisibilityEvent", 0, "XVisibilityEvent *", 0},{"_p_XVisibilityEvent"},{0}};

static swig_type_info _swigt__p_XPropertyEvent[] = {{"_p_XPropertyEvent", 0, "XPropertyEvent *", 0},{"_p_XPropertyEvent"},{0}}; static swig_type_info _swigt__p_XSelectionRequestEvent[] = {{"_p_XSelectionRequestEvent", 0, "XSelectionRequestEvent *", 0},{"_p_XSelectionRequestEvent"},{0}}; static swig_type_info _swigt__p_ob__Cursors[] = {{"_p_ob__Cursors", 0, "ob::Cursors *", 0},{"_p_ob__Cursors"},{0}}; -static swig_type_info _swigt__p_otk__ImageControl[] = {{"_p_otk__ImageControl", 0, "otk::ImageControl *", 0},{"_p_otk__ImageControl"},{0}}; +static swig_type_info _swigt__p_otk__RenderControl[] = {{"_p_otk__RenderControl", 0, "otk::RenderControl *", 0},{"_p_otk__RenderControl"},{0}}; static swig_type_info _swigt__p_ob__MwmHints[] = {{"_p_ob__MwmHints", 0, "ob::MwmHints *", 0},{"_p_ob__MwmHints"},{0}}; static swig_type_info _swigt__p_ob__Screen[] = {{"_p_ob__Screen", 0, "ob::Screen *", 0},{"_p_ob__Screen"},{0}}; static swig_type_info _swigt__p_ob__Frame[] = {{"_p_ob__Frame", 0, "ob::Frame *", 0},{"_p_ob__Frame"},{0}};

@@ -11846,7 +11847,6 @@ static swig_type_info _swigt__p_XCrossingEvent[] = {{"_p_XCrossingEvent", 0, "XCrossingEvent *", 0},{"_p_XCrossingEvent"},{0}};

static swig_type_info _swigt__p_otk__Display[] = {{"_p_otk__Display", 0, "otk::Display *", 0},{"_p_otk__Display"},{0}}; static swig_type_info _swigt__p_Display[] = {{"_p_Display", 0, "Display *", 0},{"_p_Display"},{0}}; static swig_type_info _swigt__p_XMappingEvent[] = {{"_p_XMappingEvent", 0, "XMappingEvent *", 0},{"_p_XMappingEvent"},{0}}; -static swig_type_info _swigt__p_otk__Style[] = {{"_p_otk__Style", 0, "otk::Style *", 0},{"_p_otk__Style"},{0}}; static swig_type_info _swigt__p_otk__EventHandler[] = {{"_p_otk__EventHandler", 0, "otk::EventHandler *", 0},{"_p_ob__Client", _p_ob__ClientTo_p_otk__EventHandler},{"_p_ob__Actions", _p_ob__ActionsTo_p_otk__EventHandler},{"_p_otk__EventHandler"},{"_p_ob__Frame", _p_ob__FrameTo_p_otk__EventHandler},{"_p_ob__Openbox", _p_ob__OpenboxTo_p_otk__EventHandler},{"_p_otk__Widget", _p_otk__WidgetTo_p_otk__EventHandler},{"_p_ob__Screen", _p_ob__ScreenTo_p_otk__EventHandler},{0}}; static swig_type_info _swigt__p_XReparentEvent[] = {{"_p_XReparentEvent", 0, "XReparentEvent *", 0},{"_p_XReparentEvent"},{0}}; static swig_type_info _swigt__p_otk__EventDispatcher[] = {{"_p_otk__EventDispatcher", 0, "otk::EventDispatcher *", 0},{"_p_otk__EventDispatcher"},{"_p_ob__Openbox", _p_ob__OpenboxTo_p_otk__EventDispatcher},{0}};

@@ -11859,6 +11859,7 @@ static swig_type_info _swigt__p_XEvent[] = {{"_p_XEvent", 0, "XEvent *", 0},{"_p_XEvent"},{0}};

static swig_type_info _swigt__p_otk__Property[] = {{"_p_otk__Property", 0, "otk::Property *", 0},{"_p_otk__Property"},{0}}; static swig_type_info _swigt__p_PyObject[] = {{"_p_PyObject", 0, "PyObject *", 0},{"_p_PyObject"},{0}}; static swig_type_info _swigt__p_otk__ScreenInfo[] = {{"_p_otk__ScreenInfo", 0, "otk::ScreenInfo *", 0},{"_p_otk__ScreenInfo"},{0}}; +static swig_type_info _swigt__p_otk__RenderStyle[] = {{"_p_otk__RenderStyle", 0, "otk::RenderStyle *", 0},{"_p_otk__RenderStyle"},{0}}; static swig_type_info _swigt__p_ob__EventData[] = {{"_p_ob__EventData", 0, "ob::EventData *", 0},{"_p_ob__EventData"},{0}}; static swig_type_info _swigt__p_XCreateWindowEvent[] = {{"_p_XCreateWindowEvent", 0, "XCreateWindowEvent *", 0},{"_p_XCreateWindowEvent"},{0}}; static swig_type_info _swigt__p_XDestroyWindowEvent[] = {{"_p_XDestroyWindowEvent", 0, "XDestroyWindowEvent *", 0},{"_p_XDestroyWindowEvent"},{0}};

@@ -11868,8 +11869,8 @@ static swig_type_info _swigt__p_otk__Atoms[] = {{"_p_otk__Atoms", 0, "otk::Atoms *", 0},{"_p_otk__Atoms"},{0}};

static swig_type_info _swigt__p_XKeyEvent[] = {{"_p_XKeyEvent", 0, "XKeyEvent *", 0},{"_p_XKeyEvent"},{0}}; static swig_type_info _swigt__p_int[] = {{"_p_int", 0, "int *", 0},{"_p_int"},{0}}; static swig_type_info _swigt__p_otk__Strut[] = {{"_p_otk__Strut", 0, "otk::Strut *", 0},{"_p_otk__Strut"},{0}}; -static swig_type_info _swigt__p_unsigned_long[] = {{"_p_unsigned_long", 0, "unsigned long *", 0},{"_p_unsigned_long"},{0}}; static swig_type_info _swigt__p_p_unsigned_long[] = {{"_p_p_unsigned_long", 0, "unsigned long **", 0},{"_p_p_unsigned_long"},{0}}; +static swig_type_info _swigt__p_unsigned_long[] = {{"_p_unsigned_long", 0, "unsigned long *", 0},{"_p_unsigned_long"},{0}}; static swig_type_info _swigt__p_XMotionEvent[] = {{"_p_XMotionEvent", 0, "XMotionEvent *", 0},{"_p_XMotionEvent"},{0}}; static swig_type_info _swigt__p_XButtonEvent[] = {{"_p_XButtonEvent", 0, "XButtonEvent *", 0},{"_p_XButtonEvent"},{0}}; static swig_type_info _swigt__p_XSelectionEvent[] = {{"_p_XSelectionEvent", 0, "XSelectionEvent *", 0},{"_p_XSelectionEvent"},{0}};

@@ -11898,7 +11899,7 @@ _swigt__p_XVisibilityEvent,

_swigt__p_XPropertyEvent, _swigt__p_XSelectionRequestEvent, _swigt__p_ob__Cursors, -_swigt__p_otk__ImageControl, +_swigt__p_otk__RenderControl, _swigt__p_ob__MwmHints, _swigt__p_ob__Screen, _swigt__p_ob__Frame,

@@ -11912,7 +11913,6 @@ _swigt__p_XCrossingEvent,

_swigt__p_otk__Display, _swigt__p_Display, _swigt__p_XMappingEvent, -_swigt__p_otk__Style, _swigt__p_otk__EventHandler, _swigt__p_XReparentEvent, _swigt__p_otk__EventDispatcher,

@@ -11925,6 +11925,7 @@ _swigt__p_XEvent,

_swigt__p_otk__Property, _swigt__p_PyObject, _swigt__p_otk__ScreenInfo, +_swigt__p_otk__RenderStyle, _swigt__p_ob__EventData, _swigt__p_XCreateWindowEvent, _swigt__p_XDestroyWindowEvent,

@@ -11934,8 +11935,8 @@ _swigt__p_otk__Atoms,

_swigt__p_XKeyEvent, _swigt__p_int, _swigt__p_otk__Strut, -_swigt__p_unsigned_long, _swigt__p_p_unsigned_long, +_swigt__p_unsigned_long, _swigt__p_XMotionEvent, _swigt__p_XButtonEvent, _swigt__p_XSelectionEvent,
M src/screen.ccsrc/screen.cc

@@ -48,7 +48,8 @@

Screen::Screen(int screen) : WidgetBase(WidgetBase::Type_Root), - _number(screen) + _number(screen), + _style(screen, "") { assert(screen >= 0); assert(screen < ScreenCount(**otk::display)); _info = otk::display->screenInfo(screen);

@@ -73,13 +74,8 @@ // set the mouse cursor for the root window (the default cursor)

XDefineCursor(**otk::display, _info->rootWindow(), openbox->cursors().session); - // initialize the shit that is used for all drawing on the screen - _image_control = new otk::ImageControl(_info, true); - _image_control->installRootColormap(); - _root_cmap_installed = True; - - // initialize the screen's style - _style.setImageControl(_image_control); + // XXX: initialize the screen's style + /* otk::ustring stylepath; python_get_string("theme", &stylepath); otk::Configuration sconfig(false);

@@ -92,6 +88,7 @@ ::exit(1);

} } _style.load(sconfig); + */ // set up notification of netwm support changeSupportedAtoms();

@@ -157,8 +154,6 @@ openbox->bindings()->fireEvent(&data);

XDestroyWindow(**otk::display, _focuswindow); XDestroyWindow(**otk::display, _supportwindow); - - delete _image_control; }
M src/screen.hhsrc/screen.hh

@@ -12,10 +12,9 @@ }

#include "client.hh" #include "widgetbase.hh" -#include "otk/image.hh" +#include "otk/renderstyle.hh" #include "otk/strut.hh" #include "otk/rect.hh" -#include "otk/style.hh" #include "otk/screeninfo.hh" #include "otk/eventhandler.hh" #include "otk/property.hh"

@@ -59,11 +58,8 @@

//! Information about this screen const otk::ScreenInfo *_info; - //! The Image Control used for rendering on the screen - otk::ImageControl *_image_control; - //! The style with which to render on the screen - otk::Style _style; + otk::RenderStyle _style; //! Is the root colormap currently installed? bool _root_cmap_installed;

@@ -148,12 +144,10 @@ If this is false, then the screen should be deleted and should NOT be

used. */ inline bool managed() const { return _managed; } - //! Returns the Image Control used for rendering on the screen - inline otk::ImageControl *imageControl() { return _image_control; } //! Returns the area of the screen not reserved by applications' Struts inline const otk::Rect &area() const { return _area; } //! Returns the style in use on the screen - inline const otk::Style *style() const { return &_style; } + inline const otk::RenderStyle *style() const { return &_style; } //! An offscreen window which gets focus when nothing else has it inline Window focuswindow() const { return _focuswindow; } //! Returns the desktop being displayed