]> Dogcows Code - chaz/openbox/blobdiff - otk/widget.cc
kill the typedef
[chaz/openbox] / otk / widget.cc
index 30b03bc83839922e9575a0ecbfa41b54a9bb0560..30d147c8387953b61f55cbc095bac4d442f22e79 100644 (file)
@@ -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)
@@ -90,7 +89,7 @@ void Widget::show(bool children)
     _visible = true;
     if (_parent) _parent->calcDefaultSizes();
     else {
-      resize(_min_size);
+      resize(_area.size());
     }
     XMapWindow(**display, _window);
     update();
@@ -231,12 +230,14 @@ void Widget::calcDefaultSizes()
     }
   }
   if (_direction == Horizontal) {
-    _min_size = otk::Size(min_sum, min_biggest + (_bevel + _borderwidth) * 2);
+    _min_size = otk::Size(min_sum + (_bevel + _borderwidth) * 2,
+                          min_biggest + (_bevel + _borderwidth) * 2);
     _max_size = otk::Size((fullmax ? INT_MAX :
                            max_sum  + (_bevel + _borderwidth) * 2),
                           max_biggest);
   } else {
-    _min_size = otk::Size(min_biggest, min_sum + (_bevel + _borderwidth) * 2);
+    _min_size = otk::Size(min_biggest + (_bevel + _borderwidth) * 2,
+                          min_sum + (_bevel + _borderwidth) * 2);
     _max_size = otk::Size(max_biggest, (fullmax ? INT_MAX : max_sum +
                                         (_bevel + _borderwidth) * 2));
   }
@@ -485,7 +486,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 +510,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 +523,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)
This page took 0.021967 seconds and 4 git commands to generate.