-// Rootmenu.cc for Openbox
-// Copyright (c) 2001 Sean 'Shaleh' Perry <shaleh@debian.org>
+// -*- mode: C++; indent-tabs-mode: nil; -*-
+// Rootmenu.cc for Blackbox - an X11 Window manager
+// Copyright (c) 2001 - 2002 Sean 'Shaleh' Perry <shaleh@debian.org>
// Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net)
//
// Permission is hereby granted, free of charge, to any person obtaining a
// 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 <stdio.h>
#endif // HAVE_STDIO_H
-#ifdef STDC_HEADERS
+#ifdef HAVE_STDLIB_H
# include <stdlib.h>
+#endif // HAVE_STDLIB_H
+
+#ifdef HAVE_STRING_H
# include <string.h>
-#endif // STDC_HEADERS
+#endif // HAVE_STRING_H
#ifdef HAVE_SYS_PARAM_H
# include <sys/param.h>
#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();
}