Index: src/Screen.hh =================================================================== RCS file: /cvsroot/fluxbox/fluxbox/src/Screen.hh,v retrieving revision 1.136 diff -a -b -B -p -u -r1.136 Screen.hh --- src/Screen.hh 22 Mar 2004 21:01:10 -0000 1.136 +++ src/Screen.hh 25 Mar 2004 14:04:36 -0000 @@ -177,6 +177,9 @@ public: FbTk::Menu *createMenu(const std::string &label); void hideMenus(); + /// hide all windowmenus except the given one (if given) + void hideWindowMenus(const FluxboxWindow* except= 0); + /// @return the resource value of number of workspace inline int getNumberOfWorkspaces() const { return *resource.workspaces; } Index: src/Screen.cc =================================================================== RCS file: /cvsroot/fluxbox/fluxbox/src/Screen.cc,v retrieving revision 1.271 diff -a -b -B -p -u -r1.271 Screen.cc --- src/Screen.cc 22 Mar 2004 21:01:10 -0000 1.271 +++ src/Screen.cc 25 Mar 2004 14:04:44 -0000 @@ -900,6 +900,11 @@ void BScreen::hideMenus() { (*it)->menu().hide(); } // hide all client menus + hideWindowMenus(); + +} + +void BScreen::hideWindowMenus(const FluxboxWindow* except) { Workspaces::iterator w_it = getWorkspacesList().begin(); const Workspaces::iterator w_it_end = getWorkspacesList().end(); for (; w_it != w_it_end; ++w_it) { @@ -907,13 +912,14 @@ void BScreen::hideMenus() { Workspace::Windows::iterator win_it = (*w_it)->windowList().begin(); const Workspace::Windows::iterator win_it_end = (*w_it)->windowList().end(); for (; win_it != win_it_end; ++win_it) { + if (*win_it != except) (*win_it)->menu().hide(); } } } +} -} void BScreen::reconfigure() { m_menutheme->setAlpha(*resource.menu_alpha); Index: src/Window.cc =================================================================== RCS file: /cvsroot/fluxbox/fluxbox/src/Window.cc,v retrieving revision 1.271 diff -a -b -B -p -u -r1.271 Window.cc --- src/Window.cc 21 Mar 2004 09:00:25 -0000 1.271 +++ src/Window.cc 25 Mar 2004 14:04:48 -0000 @@ -2342,8 +2342,7 @@ void FluxboxWindow::buttonPressEvent(XBu m_button_grab_y = be.y_root - frame().y() - frame().window().borderWidth(); } - if (m_windowmenu.isVisible()) - m_windowmenu.hide(); + screen().hideWindowMenus(this); } }