all repos — fluxbox @ e6b11e06c67d0c7987410097b62f730dcd88db3a

custom fork of the fluxbox windowmanager

resize maximized windows when the toolbar or slit changes size
Mark Tiefenbruck mark@fluxbox.org
commit

e6b11e06c67d0c7987410097b62f730dcd88db3a

parent

10f769f7fc1766a647a063f4204d7c5b0b0e45ba

2 files changed, 14 insertions(+), 9 deletions(-)

jump to
M src/FbWinFrame.ccsrc/FbWinFrame.cc

@@ -198,8 +198,6 @@ if (!(m_state.deco_mask & DECORM_TITLEBAR))

return; // toggle shade - if (!m_state.shaded) - saveGeometry(); m_state.shaded = !m_state.shaded; applyState(); }

@@ -256,6 +254,8 @@ } else {

m_window.resize(width, height); } + saveGeometry(); + if (move || (resize && m_screen.getTabPlacement() != TOPLEFT && m_screen.getTabPlacement() != LEFTTOP)) alignTabs();

@@ -283,6 +283,7 @@

void FbWinFrame::quietMoveResize(int x, int y, unsigned int width, unsigned int height) { m_window.moveResize(x, y, width, height); + saveGeometry(); if (m_tabmode == EXTERNAL) { switch(m_screen.getTabPlacement()) {

@@ -521,7 +522,6 @@ void FbWinFrame::setFullscreen(bool newvalue) {

if (newvalue == m_state.fullscreen) return; - saveGeometry(); m_state.fullscreen = newvalue; applyState(); }

@@ -530,7 +530,6 @@ void FbWinFrame::setMaximized(int value) {

if (value == m_state.maximized) return; - saveGeometry(); m_state.maximized = value; applyState(); }
M src/Window.ccsrc/Window.cc

@@ -1538,6 +1538,12 @@

maximized = type; frame().setMaximized(type); + // notify when struts change, so we can resize accordingly + if (maximized) + screen().workspaceAreaSig().attach(this); + else + screen().workspaceAreaSig().detach(this); + // notify listeners that we changed state stateSig().notify(); }

@@ -2771,14 +2777,14 @@ frame().setFocusTitle(win.title());

titleSig().notify(); } - } else if (subj && typeid(*subj) == typeid(BScreen::ScreenSubject)) { - if (subj == &screen().focusedWindowSig()) { - if (FocusControl::focusedFbWindow()) - setFullscreenLayer(); - } + } else if (subj == &screen().focusedWindowSig()) { + if (FocusControl::focusedFbWindow()) + setFullscreenLayer(); } else if (subj == &m_theme.reconfigSig()) { frame().applyDecorations(); sendConfigureNotify(); + } else if (subj == &screen().workspaceAreaSig()) { + frame().applyState(); } else if (m_initialized && subj == &m_frame.frameExtentSig()) { Fluxbox::instance()->updateFrameExtents(*this); sendConfigureNotify();