all repos — fluxbox @ c4c96ec830f7e22c5f5183886de1f399333f60cd

custom fork of the fluxbox windowmanager

simpler code
Mathias Gumz akira at fluxbox dot org
commit

c4c96ec830f7e22c5f5183886de1f399333f60cd

parent

710ad1d4568239bbb1c19e82d764215b492d94db

M src/ClientPattern.ccsrc/ClientPattern.cc

@@ -102,39 +102,42 @@ if (!memstr.empty() && memstr[memstr.length()-1] == '!') {

negate = true; memstr.assign(memstr, 0, memstr.length()-1); } - if (strcasecmp(memstr.c_str(), "name") == 0) { + + memstr = FbTk::StringUtil::toLower(memstr); + + if (memstr == "name") { prop = NAME; - } else if (strcasecmp(memstr.c_str(), "class") == 0) { + } else if (memstr == "class") { prop = CLASS; - } else if (strcasecmp(memstr.c_str(), "title") == 0) { + } else if (memstr == "title") { prop = TITLE; - } else if (strcasecmp(memstr.c_str(), "role") == 0) { + } else if (memstr == "role") { prop = ROLE; - } else if (strcasecmp(memstr.c_str(), "transient") == 0) { + } else if (memstr == "transient") { prop = TRANSIENT; - } else if (strcasecmp(memstr.c_str(), "maximized") == 0) { + } else if (memstr == "maximized") { prop = MAXIMIZED; - } else if (strcasecmp(memstr.c_str(), "minimized") == 0) { + } else if (memstr == "minimized") { prop = MINIMIZED; - } else if (strcasecmp(memstr.c_str(), "shaded") == 0) { + } else if (memstr == "shaded") { prop = SHADED; - } else if (strcasecmp(memstr.c_str(), "stuck") == 0) { + } else if (memstr == "stuck") { prop = STUCK; - } else if (strcasecmp(memstr.c_str(), "focushidden") == 0) { + } else if (memstr == "focushidden") { prop = FOCUSHIDDEN; - } else if (strcasecmp(memstr.c_str(), "iconhidden") == 0) { + } else if (memstr == "iconhidden") { prop = ICONHIDDEN; - } else if (strcasecmp(memstr.c_str(), "workspace") == 0) { + } else if (memstr == "workspace") { prop = WORKSPACE; - } else if (strcasecmp(memstr.c_str(), "workspacename") == 0) { + } else if (memstr == "workspacename") { prop = WORKSPACENAME; - } else if (strcasecmp(memstr.c_str(), "head") == 0) { + } else if (memstr == "head") { prop = HEAD; - } else if (strcasecmp(memstr.c_str(), "layer") == 0) { + } else if (memstr == "layer") { prop = LAYER; - } else if (strcasecmp(memstr.c_str(), "urgent") == 0) { + } else if (memstr == "urgent") { prop = URGENT; - } else if (strcasecmp(memstr.c_str(), "screen") == 0) { + } else if (memstr == "screen") { prop = SCREEN; } else { prop = NAME;

@@ -279,9 +282,7 @@ for (; it != it_end; ++it) {

if ((*it)->orig == "[current]") { WinClient *focused = FocusControl::focusedWindow(); if ((*it)->prop == WORKSPACE) { - char tmpstr[128]; - sprintf(tmpstr, "%d", win.screen().currentWorkspaceID()); - if (!(*it)->negate ^ (getProperty((*it)->prop, win) == tmpstr)) + if (!(*it)->negate ^ (getProperty((*it)->prop, win) == FbTk::StringUtil::number2String(win.screen().currentWorkspaceID()))) return false; } else if ((*it)->prop == WORKSPACENAME) { const Workspace *w = win.screen().currentWorkspace();

@@ -292,16 +293,11 @@ } else if (!focused || (!(*it)->negate ^

(getProperty((*it)->prop, win) == getProperty((*it)->prop, *focused)))) return false; - } else if ((*it)->prop == HEAD && - (*it)->orig == "[mouse]") { - int mouse_head = win.screen().getCurrHead(); - char num[32]; - sprintf(num, "%d", mouse_head); - if (!(*it)->negate ^ (getProperty((*it)->prop, win) == num)) + } else if ((*it)->prop == HEAD && (*it)->orig == "[mouse]") { + if (!(*it)->negate ^ (getProperty((*it)->prop, win) == FbTk::StringUtil::number2String(win.screen().getCurrHead()))) return false; - } else if (!(*it)->negate ^ - (*it)->regexp.match(getProperty((*it)->prop, win))) + } else if (!(*it)->negate ^ (*it)->regexp.match(getProperty((*it)->prop, win))) return false; } return true;

@@ -385,9 +381,7 @@ return (fbwin && fbwin->isIconHidden()) ? "yes" : "no";

break; case WORKSPACE: { unsigned int wsnum = (fbwin ? fbwin->workspaceNumber() : client.screen().currentWorkspaceID()); - char tmpstr[128]; - sprintf(tmpstr, "%d", wsnum); - return std::string(tmpstr); + return FbTk::StringUtil::number2String(wsnum); break; } case WORKSPACENAME: {

@@ -401,9 +395,7 @@ case HEAD: {

if (!fbwin) return ""; int head = client.screen().getHead(fbwin->fbWindow()); - char tmpstr[128]; - sprintf(tmpstr, "%d", head); - return std::string(tmpstr); + return FbTk::StringUtil::number2String(head); break; } case LAYER:

@@ -415,9 +407,7 @@ .isDemandingAttention(client) ? "yes" : "no";

break; case SCREEN: { int screenId = client.screen().screenNumber(); - char tmpstr[32]; - sprintf(tmpstr, "%d", screenId); - return std::string(tmpstr); + return FbTk::StringUtil::number2String(screenId); break; } }
M src/FbCommands.ccsrc/FbCommands.cc

@@ -144,7 +144,6 @@ return pid;

string displaystring("DISPLAY="); displaystring += DisplayString(FbTk::App::instance()->display()); - char intbuff[64]; int screen_num = m_screen_num; if (screen_num < 0) { if (Fluxbox::instance()->mouseScreen() == 0)

@@ -152,8 +151,6 @@ screen_num = 0;

else screen_num = Fluxbox::instance()->mouseScreen()->screenNumber(); } - - sprintf(intbuff, "%d", screen_num); // get shell path from the environment // this process exits immediately, so we don't have to worry about memleaks

@@ -163,7 +160,7 @@ shell = "/bin/sh";

// remove last number of display and add screen num displaystring.erase(displaystring.size()-1); - displaystring += intbuff; + displaystring += FbTk::StringUtil::number2String(screen_num); setsid(); putenv(const_cast<char *>(displaystring.c_str()));
M src/FbTk/StringUtil.ccsrc/FbTk/StringUtil.cc

@@ -60,6 +60,13 @@ namespace FbTk {

namespace StringUtil { + +std::string number2String(int num) { + char s[128]; + sprintf(s, "%d", num); + return std::string(s); +} + /** Tries to find a string in another and ignoring the case of the characters
M src/FbTk/StringUtil.hhsrc/FbTk/StringUtil.hh

@@ -30,6 +30,8 @@ namespace FbTk {

namespace StringUtil { +/// creates a number to a string +std::string number2String(int num); /// Similar to `strstr' but this function ignores the case of both strings const char *strcasestr(const char *str, const char *ptn);
M src/Layer.hhsrc/Layer.hh

@@ -22,16 +22,7 @@

#ifndef LAYER_HH #define LAYER_HH -#include <string> -#include <cstdio> - -#ifdef HAVE_CSTRING - #include <cstring> -#else - #include <string.h> -#endif - -using std::string; +#include "FbTk/StringUtil.hh" /** * (This is not the layer->raise/lower handling stuff, @see FbTk::Layer)

@@ -54,52 +45,51 @@ };

explicit Layer(int i) : m_num(i) {}; - static int getNumFromString(const string &str) { + static int getNumFromString(const std::string &str) { int tempnum = 0; + std::string v = FbTk::StringUtil::toLower(str); if (sscanf(str.c_str(), "%d", &tempnum) == 1) return tempnum; - if (strcasecmp(str.c_str(), "Menu") == 0) + if (v == "menu") return ::Layer::MENU; - if (strcasecmp(str.c_str(), "AboveDock") == 0) + if (v == "abovedock") return ::Layer::ABOVE_DOCK; - if (strcasecmp(str.c_str(), "Dock") == 0) + if (v == "dock") return ::Layer::DOCK; - if (strcasecmp(str.c_str(), "Top") == 0) + if (v == "top") return ::Layer::TOP; - if (strcasecmp(str.c_str(), "Normal") == 0) + if (v == "normal") return ::Layer::NORMAL; - if (strcasecmp(str.c_str(), "Bottom") == 0) + if (v == "bottom") return ::Layer::BOTTOM; - if (strcasecmp(str.c_str(), "Desktop") == 0) + if (v == "desktop") return ::Layer::DESKTOP; return -1; } - static string getString(int num) { + static std::string getString(int num) { switch (num) { case ::Layer::MENU: - return string("Menu"); + return std::string("Menu"); case ::Layer::ABOVE_DOCK: - return string("AboveDock"); + return std::string("AboveDock"); case ::Layer::DOCK: - return string("Dock"); + return std::string("Dock"); case ::Layer::TOP: - return string("Top"); + return std::string("Top"); case ::Layer::NORMAL: - return string("Normal"); + return std::string("Normal"); case ::Layer::BOTTOM: - return string("Bottom"); + return std::string("Bottom"); case ::Layer::DESKTOP: - return string("Desktop"); + return std::string("Desktop"); default: - char tmpstr[128]; - sprintf(tmpstr, "%d", num); - return string(tmpstr); + return FbTk::StringUtil::number2String(num); } } int getNum() const { return m_num; } - string getString() const { return getString(m_num); } + std::string getString() const { return getString(m_num); } Layer &operator=(int num) { m_num = num; return *this; }
M src/Screen.ccsrc/Screen.cc

@@ -1231,10 +1231,8 @@

bool BScreen::addKdeDockapp(Window client) { XSelectInput(FbTk::App::instance()->display(), client, StructureNotifyMask); - char intbuff[16]; - sprintf(intbuff, "%d", screenNumber()); string atom_name("_NET_SYSTEM_TRAY_S"); - atom_name += intbuff; // append number + atom_name += FbTk::StringUtil::number2String(screenNumber()); // find the right atomhandler that has the name: _NET_SYSTEM_TRAY_S<num> AtomHandler *handler = Fluxbox::instance()->getAtomHandler(atom_name); FbTk::EventHandler *evh = 0;
M src/SystemTray.ccsrc/SystemTray.cc

@@ -180,10 +180,8 @@ Fluxbox* fluxbox = Fluxbox::instance();

Display *disp = fluxbox->display(); // setup atom name to _NET_SYSTEM_TRAY_S<screen number> - char intbuff[16]; - sprintf(intbuff, "%d", m_window.screenNumber()); string atom_name("_NET_SYSTEM_TRAY_S"); - atom_name += intbuff; // append number + atom_name += FbTk::StringUtil::number2String(m_window.screenNumber()); // get selection owner and see if it's free Atom tray_atom = XInternAtom(disp, atom_name.c_str(), False);

@@ -232,10 +230,8 @@ Fluxbox* fluxbox = Fluxbox::instance();

fluxbox->removeAtomHandler(m_handler.get()); Display *disp = fluxbox->display(); // setup atom name to _NET_SYSTEM_TRAY_S<screen number> - char intbuff[16]; - sprintf(intbuff, "%d", m_window.screenNumber()); string atom_name("_NET_SYSTEM_TRAY_S"); - atom_name += intbuff; // append number + atom_name += FbTk::StringUtil::number2String(m_window.screenNumber()); // get selection owner and see if it's free Atom tray_atom = XInternAtom(disp, atom_name.c_str(), False);