diff options
author | Mark Tiefenbruck <mark@fluxbox.org> | 2008-08-23 14:46:16 (GMT) |
---|---|---|
committer | Mark Tiefenbruck <mark@fluxbox.org> | 2008-08-23 14:46:16 (GMT) |
commit | e6b11e06c67d0c7987410097b62f730dcd88db3a (patch) | |
tree | b530379b8bef0f394d587d7c767debad9a14c0c6 /src | |
parent | 10f769f7fc1766a647a063f4204d7c5b0b0e45ba (diff) | |
download | fluxbox_lack-e6b11e06c67d0c7987410097b62f730dcd88db3a.zip fluxbox_lack-e6b11e06c67d0c7987410097b62f730dcd88db3a.tar.bz2 |
resize maximized windows when the toolbar or slit changes size
Diffstat (limited to 'src')
-rw-r--r-- | src/FbWinFrame.cc | 7 | ||||
-rw-r--r-- | src/Window.cc | 16 |
2 files changed, 14 insertions, 9 deletions
diff --git a/src/FbWinFrame.cc b/src/FbWinFrame.cc index 1f0a52e..4533fa6 100644 --- a/src/FbWinFrame.cc +++ b/src/FbWinFrame.cc | |||
@@ -198,8 +198,6 @@ void FbWinFrame::shade() { | |||
198 | return; | 198 | return; |
199 | 199 | ||
200 | // toggle shade | 200 | // toggle shade |
201 | if (!m_state.shaded) | ||
202 | saveGeometry(); | ||
203 | m_state.shaded = !m_state.shaded; | 201 | m_state.shaded = !m_state.shaded; |
204 | applyState(); | 202 | applyState(); |
205 | } | 203 | } |
@@ -256,6 +254,8 @@ void FbWinFrame::moveResize(int x, int y, unsigned int width, unsigned int heigh | |||
256 | m_window.resize(width, height); | 254 | m_window.resize(width, height); |
257 | } | 255 | } |
258 | 256 | ||
257 | saveGeometry(); | ||
258 | |||
259 | if (move || (resize && m_screen.getTabPlacement() != TOPLEFT && | 259 | if (move || (resize && m_screen.getTabPlacement() != TOPLEFT && |
260 | m_screen.getTabPlacement() != LEFTTOP)) | 260 | m_screen.getTabPlacement() != LEFTTOP)) |
261 | alignTabs(); | 261 | alignTabs(); |
@@ -283,6 +283,7 @@ void FbWinFrame::moveResize(int x, int y, unsigned int width, unsigned int heigh | |||
283 | void FbWinFrame::quietMoveResize(int x, int y, | 283 | void FbWinFrame::quietMoveResize(int x, int y, |
284 | unsigned int width, unsigned int height) { | 284 | unsigned int width, unsigned int height) { |
285 | m_window.moveResize(x, y, width, height); | 285 | m_window.moveResize(x, y, width, height); |
286 | saveGeometry(); | ||
286 | if (m_tabmode == EXTERNAL) { | 287 | if (m_tabmode == EXTERNAL) { |
287 | 288 | ||
288 | switch(m_screen.getTabPlacement()) { | 289 | switch(m_screen.getTabPlacement()) { |
@@ -521,7 +522,6 @@ void FbWinFrame::setFullscreen(bool newvalue) { | |||
521 | if (newvalue == m_state.fullscreen) | 522 | if (newvalue == m_state.fullscreen) |
522 | return; | 523 | return; |
523 | 524 | ||
524 | saveGeometry(); | ||
525 | m_state.fullscreen = newvalue; | 525 | m_state.fullscreen = newvalue; |
526 | applyState(); | 526 | applyState(); |
527 | } | 527 | } |
@@ -530,7 +530,6 @@ void FbWinFrame::setMaximized(int value) { | |||
530 | if (value == m_state.maximized) | 530 | if (value == m_state.maximized) |
531 | return; | 531 | return; |
532 | 532 | ||
533 | saveGeometry(); | ||
534 | m_state.maximized = value; | 533 | m_state.maximized = value; |
535 | applyState(); | 534 | applyState(); |
536 | } | 535 | } |
diff --git a/src/Window.cc b/src/Window.cc index b175314..4b77b95 100644 --- a/src/Window.cc +++ b/src/Window.cc | |||
@@ -1538,6 +1538,12 @@ void FluxboxWindow::setMaximizedState(int type) { | |||
1538 | maximized = type; | 1538 | maximized = type; |
1539 | frame().setMaximized(type); | 1539 | frame().setMaximized(type); |
1540 | 1540 | ||
1541 | // notify when struts change, so we can resize accordingly | ||
1542 | if (maximized) | ||
1543 | screen().workspaceAreaSig().attach(this); | ||
1544 | else | ||
1545 | screen().workspaceAreaSig().detach(this); | ||
1546 | |||
1541 | // notify listeners that we changed state | 1547 | // notify listeners that we changed state |
1542 | stateSig().notify(); | 1548 | stateSig().notify(); |
1543 | } | 1549 | } |
@@ -2771,14 +2777,14 @@ void FluxboxWindow::update(FbTk::Subject *subj) { | |||
2771 | titleSig().notify(); | 2777 | titleSig().notify(); |
2772 | } | 2778 | } |
2773 | 2779 | ||
2774 | } else if (subj && typeid(*subj) == typeid(BScreen::ScreenSubject)) { | 2780 | } else if (subj == &screen().focusedWindowSig()) { |
2775 | if (subj == &screen().focusedWindowSig()) { | 2781 | if (FocusControl::focusedFbWindow()) |
2776 | if (FocusControl::focusedFbWindow()) | 2782 | setFullscreenLayer(); |
2777 | setFullscreenLayer(); | ||
2778 | } | ||
2779 | } else if (subj == &m_theme.reconfigSig()) { | 2783 | } else if (subj == &m_theme.reconfigSig()) { |
2780 | frame().applyDecorations(); | 2784 | frame().applyDecorations(); |
2781 | sendConfigureNotify(); | 2785 | sendConfigureNotify(); |
2786 | } else if (subj == &screen().workspaceAreaSig()) { | ||
2787 | frame().applyState(); | ||
2782 | } else if (m_initialized && subj == &m_frame.frameExtentSig()) { | 2788 | } else if (m_initialized && subj == &m_frame.frameExtentSig()) { |
2783 | Fluxbox::instance()->updateFrameExtents(*this); | 2789 | Fluxbox::instance()->updateFrameExtents(*this); |
2784 | sendConfigureNotify(); | 2790 | sendConfigureNotify(); |