diff --git a/src/FbWinFrame.cc b/src/FbWinFrame.cc index e9a33126..67b5fe42 100644 --- a/src/FbWinFrame.cc +++ b/src/FbWinFrame.cc @@ -19,7 +19,7 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: FbWinFrame.cc,v 1.9 2003/02/18 21:41:09 fluxgen Exp $ +// $Id: FbWinFrame.cc,v 1.10 2003/02/20 23:21:23 fluxgen Exp $ #include "FbWinFrame.hh" #include "ImageControl.hh" @@ -134,6 +134,9 @@ void FbWinFrame::show() { Toggle shade state, and resize window */ void FbWinFrame::shade() { + if (!m_use_titlebar) + return; + if (!m_shaded) { m_width_before_shade = m_window.width(); m_height_before_shade = m_window.height(); @@ -168,12 +171,13 @@ void FbWinFrame::resize(unsigned int width, unsigned int height) { void FbWinFrame::resizeForClient(unsigned int width, unsigned int height) { // total height for frame without client - unsigned int total_height = m_handle.height() + m_titlebar.height(); + unsigned int total_height = m_handle.height() + m_handle.borderWidth() + + m_titlebar.height() + m_titlebar.borderWidth(); // resize frame height with total height + specified height if (!m_use_titlebar) - total_height -= m_titlebar.height(); + total_height -= m_titlebar.height() + m_titlebar.borderWidth(); if (!m_use_handle) - total_height -= m_handle.height(); + total_height -= m_handle.height() + m_handle.borderWidth(); resize(width, total_height + height); } @@ -269,13 +273,27 @@ void FbWinFrame::removeClient() { } void FbWinFrame::hideTitlebar() { + if (!m_use_titlebar) + return; + m_titlebar.hide(); m_use_titlebar = false; + m_clientarea.raise(); + m_window.resize(m_window.width(), m_window.height() - m_titlebar.height()); +#ifdef DEBUG + cerr<<__FILE__<<": Hide Titlebar"<<endl; +#endif // DEBUG } void FbWinFrame::showTitlebar() { + if (m_use_titlebar) + return; + m_titlebar.show(); m_use_titlebar = true; +#ifdef DEBUG + cerr<<__FILE__<<": Show Titlebar"<<endl; +#endif // DEBUG } void FbWinFrame::hideHandle() { @@ -392,12 +410,13 @@ void FbWinFrame::reconfigure() { // align titlebar and render it if (m_use_titlebar) reconfigureTitlebar(); + // setup client area size/pos - int next_y = m_titlebar.height() + 2*m_titlebar.borderWidth(); + int next_y = m_titlebar.height() + 2*m_titlebar.borderWidth(); unsigned int client_height = m_window.height() - m_titlebar.height() - m_handle.height(); if (!m_use_titlebar) { - next_y = 0; + next_y = -m_titlebar.y(); if (!m_use_handle) client_height = m_window.height(); else @@ -475,6 +494,8 @@ void FbWinFrame::redrawTitle() { } void FbWinFrame::redrawTitlebar() { + if (!m_use_titlebar) + return; m_titlebar.clear(); m_label.clear(); redrawTitle(); @@ -484,6 +505,9 @@ void FbWinFrame::redrawTitlebar() { Align buttons with title text window */ void FbWinFrame::reconfigureTitlebar() { + if (!m_use_titlebar) + return; + // resize titlebar to window size with font height m_titlebar.moveResize(-m_titlebar.borderWidth(), -m_titlebar.borderWidth(), m_window.width(),