From 410a8264586671256f4a2d1b3095fa6ecffc01bd Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sun, 10 Nov 2002 10:14:20 +0000 Subject: [PATCH] more layout fixes for the decoration elements --- otk/style.hh | 5 ++++- src/frame.cc | 25 ++++++++++++++++--------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/otk/style.hh b/otk/style.hh index 77993a8e..d80c6ab9 100644 --- a/otk/style.hh +++ b/otk/style.hh @@ -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; } diff --git a/src/frame.cc b/src/frame.cc index f7103b02..d70dad01 100644 --- a/src/frame.cc +++ b/src/frame.cc @@ -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); -- 2.45.2