all repos — fluxbox @ 4d6f6ba54f34c8465d0b3179fe0fbd42d935edf2

custom fork of the fluxbox windowmanager

added action RootMenu
fluxgen fluxgen
commit

4d6f6ba54f34c8465d0b3179fe0fbd42d935edf2

parent

b7ca86795e60c0d5f11a75c7ac1b1235f7d3b4fe

1 files changed, 43 insertions(+), 2 deletions(-)

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

@@ -22,7 +22,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: fluxbox.cc,v 1.46 2002/04/08 22:36:30 fluxgen Exp $ +// $Id: fluxbox.cc,v 1.47 2002/04/09 09:42:16 fluxgen Exp $ //Use some GNU extensions #ifndef _GNU_SOURCE

@@ -282,7 +282,7 @@ //static singleton var

Fluxbox *Fluxbox::singleton=0; //------------ instance --------------------- -//returns singleton object of blackbox class +//returns singleton object of Fluxbox class //since we only need to create one instance of Fluxbox //------------------------------------------- Fluxbox *Fluxbox::instance(int m_argc, char **m_argv, char *dpy_name, char *rc) {

@@ -1267,6 +1267,47 @@ spawnlp(P_NOWAIT, "cmd.exe", "cmd.exe", "/c", item->exec(), NULL);

#endif // !__EMX__ + } + break; + case Keys::ROOTMENU: //show root menu + { + LinkedListIterator<BScreen> it(screenList); + + for (; it.current(); it++) { + + BScreen *screen = it.current(); + if (ke.window != screen->getRootWindow()) + continue; + + //calculate placement of workspace menu + //and show/hide it + int mx = ke.x_root - + (screen->getRootmenu()->width() / 2); + int my = ke.y_root - + (screen->getRootmenu()->titleHeight() / 2); + + if (mx < 0) mx = 0; + if (my < 0) my = 0; + + if (mx + screen->getRootmenu()->width() > screen->getWidth()) { + mx = screen->getWidth() - + screen->getRootmenu()->width() - + screen->getBorderWidth(); + } + + if (my + screen->getRootmenu()->height() > + screen->getHeight()) { + my = screen->getHeight() - + screen->getRootmenu()->height() - + screen->getBorderWidth(); + } + screen->getRootmenu()->move(mx, my); + + if (! screen->getRootmenu()->isVisible()) { + checkMenu(); + screen->getRootmenu()->show(); + } + } } break; default: //try to see if its a window action