]> Dogcows Code - chaz/openbox/commitdiff
more layout fixes for the decoration elements
authorDana Jansens <danakj@orodu.net>
Sun, 10 Nov 2002 10:14:20 +0000 (10:14 +0000)
committerDana Jansens <danakj@orodu.net>
Sun, 10 Nov 2002 10:14:20 +0000 (10:14 +0000)
otk/style.hh
src/frame.cc

index 77993a8e53c92ea6dca7e2e4f215aa4b05eae107..d80c6ab9f5aea87c46a2571fb057a3b2e113fdc0 100644 (file)
@@ -87,10 +87,13 @@ public:
   inline unsigned int getFrameWidth(void) const { return frame_width; }
   inline unsigned int getBorderWidth(void) const { return border_width; }
 
-  inline const BFont *getFont() const { return font; }
+  inline const BFont &getFont() const { return *font; }
 
   inline const BColor &getBorderColor() const { return border_color; }
 
+  inline const BTexture &getFrameFocus() const { return f_focus; }
+  inline const BTexture &getFrameUnfocus() const { return f_unfocus; }
+
   inline void setImageControl(BImageControl *c) { image_control = c; }
   inline void setScreenNumber(unsigned int scr) { screen_number = scr; }
 
index f7103b02fab368b7215e2dabe35f32300d0fe7e7..d70dad0184f3d658acf4c49c7782ad8c9ad131f7 100644 (file)
@@ -114,6 +114,13 @@ void OBFrame::loadStyle(const otk::Style *style)
   XSetWindowBorder(otk::OBDisplay::display, _handle,
                    _style->getBorderColor().pixel());
   
+  // XXX: if (focused)
+    XSetWindowBackground(otk::OBDisplay::display, _window,
+                         _style->getFrameFocus().color().pixel());
+  // XXX: else  
+  // XXX:  XSetWindowBackground(otk::OBDisplay::display, _window,
+  // XXX:                       _style->getFrameUnfocus().color().pixel());
+
   // if !replace, then update() will get called after the client is grabbed!
   if (replace) {
     update();
@@ -144,13 +151,13 @@ void OBFrame::update()
     _titlebar_area.setRect(-_style->getBorderWidth(),
                            -_style->getBorderWidth(),
                            width,
-                           (_style->getFont()->height() +
+                           (_style->getFont().height() +
                             _style->getBevelWidth() * 2));
     _size.top += _titlebar_area.height() + _style->getBorderWidth();
 
     // set the label size
     _label_area.setRect(0, _style->getBevelWidth(),
-                        width, _style->getFont()->height());
+                        width, _style->getFont().height());
     // set the buttons sizes
     if (_decorations & OBClient::Decor_Iconify)
       _button_iconify_area.setRect(0, _style->getBevelWidth() + 1,
@@ -217,7 +224,8 @@ void OBFrame::update()
 
   if (_decorations & OBClient::Decor_Handle) {
     _handle_area.setRect(-_style->getBorderWidth(),
-                         _size.top + _client->area().height(),
+                         _size.top + _client->area().height() +
+                         _style->getFrameWidth(),
                          width, _style->getHandleWidth());
     _grip_left_area.setRect(-_style->getBorderWidth(),
                             -_style->getBorderWidth(),
@@ -337,14 +345,14 @@ void OBFrame::updateShape()
   if (!_client->shaped()) {
     // clear the shape on the frame window
     XShapeCombineMask(otk::OBDisplay::display, _window, ShapeBounding,
-                      _size.left - 2,//frame.margin.left - frame.border_w,
-                      _size.top - 2,//frame.margin.top - frame.border_w,
+                      _size.left,
+                      _size.top,
                       None, ShapeSet);
   } else {
     // make the frame's shape match the clients
     XShapeCombineShape(otk::OBDisplay::display, _window, ShapeBounding,
-                       _size.left - 2,
-                       _size.top - 2,
+                       _size.left,
+                       _size.top,
                        _client->window(), ShapeBounding, ShapeSet);
 
   int num = 0;
@@ -386,8 +394,7 @@ void OBFrame::grabClient()
   // reparent the client to the frame
   XSelectInput(otk::OBDisplay::display, _client->window(),
                OBClient::event_mask & ~StructureNotifyMask);
-  XReparentWindow(otk::OBDisplay::display, _client->window(), _window,
-                  _size.left, _size.top);
+  XReparentWindow(otk::OBDisplay::display, _client->window(), _window, 0, 0);
   XSelectInput(otk::OBDisplay::display, _client->window(),
                OBClient::event_mask);
 
This page took 0.026963 seconds and 4 git commands to generate.