X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Fwidget.cc;h=690224d897d7c13124cda435d717503ff1724fe0;hb=1e58c863bbaddd2f2dbebfde740ca842e8837a1c;hp=30b03bc83839922e9575a0ecbfa41b54a9bb0560;hpb=a4c8a839a3decc54e515fd110710195eca23fd2b;p=chaz%2Fopenbox diff --git a/otk/widget.cc b/otk/widget.cc index 30b03bc8..690224d8 100644 --- a/otk/widget.cc +++ b/otk/widget.cc @@ -37,7 +37,6 @@ Widget::Widget(int screen, EventDispatcher *ed, Direction direction, int bevel, { createWindow(overrideredir); _dispatcher->registerHandler(_window, this); - styleChanged(*RenderStyle::style(_screen)); } Widget::Widget(Widget *parent, Direction direction, int bevel) @@ -485,7 +484,14 @@ void Widget::layoutVert() void Widget::render() { - if (!_texture || !_dirty) return; + if (!_dirty) return; + if (!_texture) { + // set a solid color as the default background + XSetWindowBackground(**display, _window, + RenderStyle::style(_screen)-> + titlebarUnfocusBackground()->color().pixel()); + return; + } if (_borderwidth * 2 > _area.width() || _borderwidth * 2 > _area.height()) return; // no surface to draw on @@ -502,6 +508,7 @@ void Widget::render() // delete the old surface *after* its pixmap isn't in use anymore if (_surface) delete _surface; + s->freePixelData(); // done rendering with this surface _surface = s; _dirty = false; @@ -514,9 +521,9 @@ void Widget::renderChildren() (*it)->render(); } -void Widget::styleChanged(const RenderStyle &style) +void Widget::styleChanged(const RenderStyle &) { - _texture = style.titlebarUnfocusBackground(); + refresh(); } void Widget::exposeHandler(const XExposeEvent &e)