X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2FRootmenu.cc;h=3395b4f728da28745eed496f85995e91193608cb;hb=07e619ebbb7c43b22f3bcb5672413d343cf66d24;hp=b8c8f2dd924fec056bb43eb4ac55f29769efc8e6;hpb=72af8cea6a0573f7d2c004102cd04f1a1ad88798;p=chaz%2Fopenbox diff --git a/src/Rootmenu.cc b/src/Rootmenu.cc index b8c8f2dd..3395b4f7 100644 --- a/src/Rootmenu.cc +++ b/src/Rootmenu.cc @@ -1,5 +1,6 @@ -// Rootmenu.cc for Openbox -// Copyright (c) 2001 Sean 'Shaleh' Perry +// -*- mode: C++; indent-tabs-mode: nil; -*- +// Rootmenu.cc for Blackbox - an X11 Window manager +// Copyright (c) 2001 - 2002 Sean 'Shaleh' Perry // Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net) // // Permission is hereby granted, free of charge, to any person obtaining a @@ -20,94 +21,76 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// stupid macros needed to access some functions in version 2 of the GNU C -// library -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif // _GNU_SOURCE - #ifdef HAVE_CONFIG_H # include "../config.h" #endif // HAVE_CONFIG_H -#include "openbox.h" -#include "Rootmenu.h" -#include "Screen.h" - +extern "C" { #ifdef HAVE_STDIO_H # include #endif // HAVE_STDIO_H -#ifdef STDC_HEADERS +#ifdef HAVE_STDLIB_H # include +#endif // HAVE_STDLIB_H + +#ifdef HAVE_STRING_H # include -#endif // STDC_HEADERS +#endif // HAVE_STRING_H #ifdef HAVE_SYS_PARAM_H # include #endif // HAVE_SYS_PARAM_H +} -#ifndef MAXPATHLEN -#define MAXPATHLEN 255 -#endif // MAXPATHLEN +#include "blackbox.hh" +#include "Rootmenu.hh" +#include "Screen.hh" +#include "Util.hh" -Rootmenu::Rootmenu(BScreen &scrn) : Basemenu(scrn), screen(scrn), - openbox(scrn.getOpenbox()) -{ -} +Rootmenu::Rootmenu(BScreen *scrn) : Basemenu(scrn) { } -void Rootmenu::itemSelected(int button, int index) { +void Rootmenu::itemSelected(int button, unsigned int index) { if (button != 1) return; BasemenuItem *item = find(index); - if (!item->function()) + if (! item->function()) return; + if (! (getScreen()->getRootmenu()->isTorn() || isTorn()) && + item->function() != BScreen::Reconfigure && + item->function() != BScreen::SetStyle) + hide(); + switch (item->function()) { case BScreen::Execute: - if (item->exec()) { -#ifndef __EMX__ - char displaystring[MAXPATHLEN]; - sprintf(displaystring, "DISPLAY=%s", - DisplayString(screen.getBaseDisplay().getXDisplay())); - sprintf(displaystring + strlen(displaystring) - 1, "%d", - screen.getScreenNumber()); - - bexec(item->exec(), displaystring); -#else // __EMX__ - spawnlp(P_NOWAIT, "cmd.exe", "cmd.exe", "/c", item->exec(), NULL); -#endif // !__EMX__ - } + if (item->exec()) + bexec(item->exec(), getScreen()->displayString()); break; case BScreen::Restart: - openbox.restart(); + getScreen()->getBlackbox()->restart(); break; case BScreen::RestartOther: if (item->exec()) - openbox.restart(item->exec()); + getScreen()->getBlackbox()->restart(item->exec()); break; case BScreen::Exit: - openbox.shutdown(); + getScreen()->getBlackbox()->shutdown(); break; case BScreen::SetStyle: if (item->exec()) - openbox.saveStyleFilename(item->exec()); + getScreen()->getBlackbox()->saveStyleFilename(item->exec()); case BScreen::Reconfigure: - openbox.reconfigure(); + getScreen()->getBlackbox()->reconfigure(); return; } - - if (! (screen.getRootmenu()->isTorn() || isTorn()) && - item->function() != BScreen::Reconfigure && - item->function() != BScreen::SetStyle) - hide(); }