From 2f9f29df22e82f8648c048eec574443811cec5c1 Mon Sep 17 00:00:00 2001 From: Mark Tiefenbruck Date: Tue, 1 Jan 2008 17:32:10 -0800 Subject: make reported frame extents include border width --- src/Ewmh.cc | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/Ewmh.cc b/src/Ewmh.cc index 257b432..067b445 100644 --- a/src/Ewmh.cc +++ b/src/Ewmh.cc @@ -810,14 +810,14 @@ bool Ewmh::checkClientMessage(const XClientMessageEvent &ce, if (!screen) return true; FbWinFrameTheme &theme = screen->winFrameTheme(); + unsigned int bw = theme.border(true).width(); long title_h = theme.titleHeight() || - theme.font().height() + 2*theme.bevelWidth() + 2; - title_h += theme.border(true).width(); - long handle_h = theme.handleWidth() + theme.border(true).width(); + theme.font().height() + 2*theme.bevelWidth() + 2 + 2*bw; + long handle_h = theme.handleWidth() + 2*bw; long extents[4]; // our frames currently don't protrude from left/right - extents[0] = 0; - extents[1] = 0; + extents[0] = bw; + extents[1] = bw; extents[2] = title_h; extents[3] = handle_h; @@ -1195,16 +1195,18 @@ void Ewmh::updateFrameExtents(FluxboxWindow &win) { protrudes from the client window, on left, right, top, bottom (it is independent of window position). */ - long extents[4]; - // our frames currently don't protrude from left/right - extents[0] = 0; - extents[1] = 0; - extents[2] = win.frame().titlebarHeight(); - extents[3] = win.frame().handleHeight(); FluxboxWindow::ClientList::iterator it = win.clientList().begin(); FluxboxWindow::ClientList::iterator it_end = win.clientList().end(); for (; it != it_end; ++it) { + long extents[4]; + // our frames currently don't protrude from left/right + int bw = win.frame().window().borderWidth() - (*it)->old_bw; + extents[0] = bw; + extents[1] = bw; + extents[2] = win.frame().titlebarHeight() + bw; + extents[3] = win.frame().handleHeight() + bw; + (*it)->changeProperty(m_net_frame_extents, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)extents, 4); -- cgit v0.11.2 From 6ea1ed8cfa2915a75479daec2b21513a11cd0cee Mon Sep 17 00:00:00 2001 From: Mark Tiefenbruck Date: Tue, 1 Jan 2008 19:10:38 -0800 Subject: fix border width on synthetic ConfigureNotify events --- src/FbTk/FbWindow.cc | 7 +++---- src/FbTk/FbWindow.hh | 3 ++- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/FbTk/FbWindow.cc b/src/FbTk/FbWindow.cc index 12492d9..12b16d9 100644 --- a/src/FbTk/FbWindow.cc +++ b/src/FbTk/FbWindow.cc @@ -633,7 +633,8 @@ void FbWindow::create(Window parent, int x, int y, void FbWindow::sendConfigureNotify(int x, int y, - unsigned int width, unsigned int height) { + unsigned int width, unsigned int height, + unsigned int bw) { Display *disp = FbTk::App::instance()->display(); XEvent event; event.type = ConfigureNotify; @@ -645,9 +646,7 @@ void FbWindow::sendConfigureNotify(int x, int y, event.xconfigure.y = y; event.xconfigure.width = width; event.xconfigure.height = height; - //!! TODO - event.xconfigure.border_width = 1; - //!! TODO + event.xconfigure.border_width = bw; event.xconfigure.above = None; event.xconfigure.override_redirect = false; diff --git a/src/FbTk/FbWindow.hh b/src/FbTk/FbWindow.hh index f266ec3..ae3526c 100644 --- a/src/FbTk/FbWindow.hh +++ b/src/FbTk/FbWindow.hh @@ -195,7 +195,8 @@ public: void setOpaque(unsigned char alpha); void setRenderer(FbWindowRenderer &renderer) { m_renderer = &renderer; } - void sendConfigureNotify(int x, int y, unsigned int width, unsigned int height); + void sendConfigureNotify(int x, int y, unsigned int width, + unsigned int height, unsigned int bw = 0); /// forces full background change, recalcing of alpha values if necessary void updateBackground(bool only_if_alpha); -- cgit v0.11.2