From 8735c6a08bdab11172ec6e4c35271a4b8c374fc7 Mon Sep 17 00:00:00 2001 From: fluxgen <fluxgen> Date: Thu, 18 Dec 2003 15:27:21 +0000 Subject: clamp menu delay resource --- src/Screen.cc | 53 +++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 14 deletions(-) diff --git a/src/Screen.cc b/src/Screen.cc index d579e62..474c334 100644 --- a/src/Screen.cc +++ b/src/Screen.cc @@ -22,7 +22,7 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: Screen.cc,v 1.249 2003/12/14 01:09:00 fluxgen Exp $ +// $Id: Screen.cc,v 1.250 2003/12/18 15:27:21 fluxgen Exp $ #include "Screen.hh" @@ -335,6 +335,17 @@ BScreen::BScreen(FbTk::ResourceManager &rm, m_menutheme->setAlpha(*resource.menu_alpha); m_menutheme->setMenuMode(*resource.menu_mode); + // clamp values + if (*resource.menu_delay > 5000) + *resource.menu_delay = 5000; + if (*resource.menu_delay < 0) + *resource.menu_delay = 0; + + if (*resource.menu_delay_close > 5000) + *resource.menu_delay_close = 5000; + if (*resource.menu_delay_close < 0) + *resource.menu_delay_close = 0; + m_menutheme->setDelayOpen(*resource.menu_delay); m_menutheme->setDelayClose(*resource.menu_delay_close); @@ -601,6 +612,18 @@ FbTk::Menu *BScreen::createMenu(const std::string &label) { void BScreen::reconfigure() { m_menutheme->setAlpha(*resource.menu_alpha); m_menutheme->setMenuMode(*resource.menu_mode); + + // clamp values + if (*resource.menu_delay > 5000) + *resource.menu_delay = 5000; + if (*resource.menu_delay < 0) + *resource.menu_delay = 0; + + if (*resource.menu_delay_close > 5000) + *resource.menu_delay_close = 5000; + if (*resource.menu_delay_close < 0) + *resource.menu_delay_close = 0; + m_menutheme->setDelayOpen(*resource.menu_delay); m_menutheme->setDelayClose(*resource.menu_delay_close); @@ -878,10 +901,11 @@ void BScreen::changeWorkspaceID(unsigned int id) { // This is a little tricks to reduce flicker // this way we can set focus pixmap on frame before we show it // and using ExposeEvent to redraw without flicker - //WinClient *win = getLastFocusedWindow(currentWorkspaceID()); - //if (win && win->fbwindow()) { - // win->fbwindow()->setFocusFlag(true); - //} + /* + WinClient *win = getLastFocusedWindow(currentWorkspaceID()); + if (win && win->fbwindow()) + win->fbwindow()->setFocusFlag(true); + */ currentWorkspace()->showAll(); @@ -899,9 +923,8 @@ void BScreen::changeWorkspaceID(unsigned int id) { void BScreen::sendToWorkspace(unsigned int id, FluxboxWindow *win, bool changeWS) { - if (! m_current_workspace || id >= m_workspaces_list.size()) { + if (! m_current_workspace || id >= m_workspaces_list.size()) return; - } if (!win) { WinClient *client = Fluxbox::instance()->getFocusedWindow(); @@ -915,16 +938,17 @@ void BScreen::sendToWorkspace(unsigned int id, FluxboxWindow *win, bool changeWS if (win && &win->screen() == this && (! win->isStuck())) { - if (win->isIconic()) { + // if iconified, deiconify it before we send it somewhere + if (win->isIconic()) win->deiconify(); - } + // if the window isn't on current workspace, hide it if (id != currentWorkspace()->workspaceID()) win->withdraw(); - reassociateWindow(win, id, true); - + + // if the window is on current workspace, show it. if (id == currentWorkspace()->workspaceID()) win->deiconify(false, false); @@ -2255,7 +2279,7 @@ WinClient *BScreen::getLastFocusedWindow(int workspace) { FocusedWindows::iterator it = focused_list.begin(); FocusedWindows::iterator it_end = focused_list.end(); - for (; it != it_end; ++it) + for (; it != it_end; ++it) { if ((*it)->fbwindow() && (((int)(*it)->fbwindow()->workspaceNumber()) == workspace && !(*it)->fbwindow()->isIconic() @@ -2263,17 +2287,18 @@ WinClient *BScreen::getLastFocusedWindow(int workspace) { // only give focus to a stuck window if it is currently focused // otherwise they tend to override normal workspace focus return *it; + } return 0; } void BScreen::updateSize() { + // force update geometry rootWindow().updateGeometry(); - // reconfigure anything that depends on root window size - // reset background m_root_theme->reconfigTheme(); + // send resize notify m_resize_sig.notify(); } -- cgit v0.11.2